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);
        }
        
    }

 

posted on 2019-06-22 19:47  睡觉的阿狸  阅读(390)  评论(0编辑  收藏  举报