zoukankan      html  css  js  c++  java
  • dbutils工具

    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);
            }
            
        }
  • 相关阅读:
    RAID中的Stripe size对性能的影响?
    TCP segmentation offload
    传统网络配置命令与IP高级路由命令
    WebTrends Log Analyzer
    linux使用vi中文乱码的解决办法
    链接静态库的顺序问题
    tcpdump命令格式
    怎样取得文件行数
    Tcpdump命令的使用与示例——linux下的网络分析
    Linux系统面面观 PROC文件系统详细介绍
  • 原文地址:https://www.cnblogs.com/taozizainali/p/11070117.html
Copyright © 2011-2022 走看看