使用commons-dbutils

commons-dbutils 比commons-pool小多了,就像官方的example中说的一样我们只需要了解QueryRunner类和ResultSetHandler接口。
顺便说一下,家里笔记本装的是oracle 11g xe(oracle的快捷版),用于测试代码完全是够了。装好后在安装目录的:oraclex\app\oracle\product\11.2.0\server\jdbc\lib 下有驱动类。
ojdbc5.jar 对应1.5jdk,ojdbc6.jar 或者ojdbc6_g.jar 对应1.6jdk。

下面是测试例子:

public class TestRunner2 {
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		QueryRunner runer = new QueryRunner();

		BasicDataSource bds = new BasicDataSource();
		bds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
		bds.setUsername("xiaoqingp");
		bds.setPassword("test");
		bds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:XE");

		Connection conn = bds.getConnection();
		conn.setAutoCommit(false);
		for (int i = 0; i < 2; i++) {
			String sql = "insert into p_user\n" + "  (id, name, remark)\n"
					+ "values\n" + "  (xiaoqing_seq.nextval, ? , ?)";

			runer.update(conn, sql, new Object[] { "测试" + i, "测试添加" + i });
		}

		conn.commit();
		conn.close();
	}
}

XE获取到的connection 默认还是自动提交,所以这里写了一下:conn.setAutoCommit(false)
比较遗憾的是没有对plsql 过程使用进行封装,等看完DBCP源码后自己写一个。

ResultSetHandler ,这个就是java回调模式的一种实现。
public class TestResultSetHandler {

	public static void main(String[] args) throws SQLException {
		QueryRunner runer = new QueryRunner();

		BasicDataSource bds = new BasicDataSource();
		bds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
		bds.setUsername("xiaoqingp");
		bds.setPassword("test");
		bds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:XE");

		Connection conn = bds.getConnection();
		conn.setAutoCommit(false);
		
		String sql = "select name, remark from p_user";
		List<User> list = runer.query(conn,sql, new ResultSetHandler<List<User>>(){
			@Override
			public List<User> handle(ResultSet rs) throws SQLException {
				List<User> list = new ArrayList<User>();
				while(rs.next()){
					User temp = new User();
					temp.setName(rs.getString("name"));
					temp.setRemark(rs.getString("remark"));
					
					list.add(temp);
				}
				
				return list;
			}
			
		});
		
		System.out.println(list);
		
	}
}

你可能感兴趣的:(commons)