dbutils工具
它就是一个简单的jdbc封装工具.
使用dbutils可以简化操作.要使用dbutils需要导入jar包. commons-dbutils-1.4.jarQueryRunner类
1.query 用于执行select 2.update 用于执行update delete insert3.batch 批处理
ResultSetHandler接口
用于定义结果集的封装,我们也可以自己去定义一个结果集的封装
它提供九个实现类,可以进行不同的封装。
[DbUtils类]
它提供关于关闭资源以及事务rollback,commit操作。里面的方法都是静态的
dbutils使用
QueryRunner类
QueryRunner类提供了两个构造方法:
默认的构造方法 如果是使用这种构造创建的QueryRunner,它的事务是手动控制.1.new QueryRunner()需要一个 javax.sql.DataSource 来作参数的构造方法。如果是使用这种构造,它的事务是自动事务,简单说,一条sql一个事务。2.new QueryRunner(DataSource ds);
方法
query 查的方法 update 增、删、改的方法batch对于上述三个方法,它们提供很多重载。如果QueryRunner在创建时,没有传递DataSource参数,那么在使用query,update,batch方法时,要传递Connection参数如果QueryRunner在创建时,传递了DataSource参数,那么在使用query,update,batch方法时,不需要传递Connection参数。
QueryRunner runner=new QueryRunner();runner.query(Connection,sql,ResultSetHandler,Object... param);runner.update(Connection,sql,Object...param);runner.batch(Connection con,sql,Object[][] objs);QueryRunner runner=new QueryRunner(DataSource ds);runner.query(sql,ResultSetHandler,Object... param);runner.update(sql,Object...param);runner.batch(sql,Object[][] objs);
自定义表的联查
//自定义全查[两表联查] @Test public void selectAllTwo() throws ClassNotFoundException, SQLException{ QueryRunner qr= new QueryRunner(); // 使用匿名内部类实现接口 ResultSetHandler 记住(泛型)【泛型是什么类型,返回值就是什么类型】 Listli = qr.query(JDBCutil.getCon(), "select * from emp e,dept d where e.deptno = d.deptno", new ResultSetHandler
>(){ public List handle(ResultSet rs) throws SQLException { List li = new ArrayList (); Emp e = null; Dept d = null; while (rs.next()) { d = new Dept(rs.getInt("deptno"), rs.getString("dname"), rs.getString("loc")); e = new Emp(rs.getInt("empno"), rs.getString("ename"), rs.getString("job"), d); li.add(e); } return li; } }); for (Emp emp : li) { System.out.println(emp); } }