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。
下面是测试例子:
XE获取到的connection 默认还是自动提交,所以这里写了一下:conn.setAutoCommit(false)
比较遗憾的是没有对plsql 过程使用进行封装,等看完DBCP源码后自己写一个。
ResultSetHandler ,这个就是java回调模式的一种实现。
顺便说一下,家里笔记本装的是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);
}
}