dbutils工具
它就是一个简单的jdbc封装工具.
使用dbutils可以简化操作.
要使用dbutils需要导入jar包. commons-dbutils-1.4.jar
QueryRunner类
1.query 用于执行select 2.update 用于执行update delete insert 3.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 记住(泛型)【泛型是什么类型,返回值就是什么类型】 List<Emp> li = qr.query(JDBCutil.getCon(), "select * from emp e,dept d where e.deptno = d.deptno", new ResultSetHandler<List<Emp>>(){ public List<Emp> handle(ResultSet rs) throws SQLException { List<Emp> li = new ArrayList<Emp>(); 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); } }