DbUtils组件

commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。

DbUtils组件

1.  简化jdbc操作
2.  下载组件,引入jar文件 : commons-dbutils-1.6.jar

实例

|-- DbUtils   关闭资源、加载驱动
|-- QueryRunner   组件的核心工具类:定义了所有的与数据库操作的方法(查询、更新)
    Int  update(Connection conn, String sql, Object param);   执行更新带一个占位符的sql
    Int  update(Connection conn, String sql, Object…  param); 执行更新带多个占位符的sql
    Int[]  batch(Connection conn, String sql, Object[][] params)        批处理
    T  query(Connection conn ,String sql, ResultSetHandler<T> rsh, Object... params)   查询方法
    Int  update( String sql, Object param);  
    Int  update( String sql, Object…  param); 
    Int[]  batch( String sql, Object[][] params)       
注意: 如果调用DbUtils组件的操作数据库方法,没有传入连接对象,那么在实例化QueryRunner对象的时候需要传入数据源对象: QueryRunner qr = new QueryRunner(ds);

DbUtils提供的封装结果的一些对象:
    1)  BeanHandler: 查询返回单个对象
    2)  BeanListHandler: 查询返回list集合,集合元素是指定的对象
    3)  ArrayHandler, 查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]
    4)  ArrayListHandler, 把查询的每一行都封装为对象数组,再添加到list集合中
    5)  ScalarHandler 查询返回结果记录的第一行的第一列  (在聚合函数统计的时候用)
    6)  MapHandler  查询返回结果的第一条记录封装为map
public class App_update {

    private Connection conn;

    // 1. 更新
    @Test
    public void testUpdate() throws Exception {
        String sql = "delete from admin where id=?";
        // 连接对象
        conn = JdbcUtil.getConnection();

        // 创建DbUtils核心工具类对象
        QueryRunner qr = new QueryRunner();
        qr.update(conn, sql, 26);

        // 关闭
        DbUtils.close(conn);
    }

    // 2. 批处理
    @Test
    public void testBatch() throws Exception {
        String sql = "insert into admin (userName, pwd) values(?,?)";
        conn = JdbcUtil.getConnection();
        QueryRunner qr = new QueryRunner();
        // 批量删除
        qr.batch(conn, sql, new Object[][]{ {"jack1","888"},{"jack2","999"}  });

        // 关闭
        conn.close();
    }
}
public class App_query {

    private Connection conn;

    // 一、查询, 自定义结果集封装数据
    @Test
    public void testQuery() throws Exception {
        String sql = "select * from admin where id=?";
        // 获取连接
        conn = JdbcUtil.getConnection();
        // 创建DbUtils核心工具类对象
        QueryRunner qr = new QueryRunner();
        // 查询
        Admin admin = qr.query(conn, sql, new ResultSetHandler<Admin>() {

            // 如何封装一个Admin对象
            public Admin handle(ResultSet rs) throws SQLException {
                if (rs.next()) {
                    Admin admin = new Admin();
                    admin.setId(rs.getInt("id"));
                    admin.setUserName(rs.getString("userName"));
                    admin.setPwd(rs.getString("pwd"));
                    return admin;
                }
                return null;
            }

        }, 29);

        // 测试
        System.out.println(admin);
        // 关闭
        conn.close();

    }

    // 二、查询, 使用组件提供的结果集对象封装数据

    // 1)BeanHandler: 查询返回单个对象
    @Test
    public void testQueryOne() throws Exception {
        String sql = "select * from admin where id=?";
        // 获取连接
        conn = JdbcUtil.getConnection();
        // 创建DbUtils核心工具类对象
        QueryRunner qr = new QueryRunner();
        // 查询返回单个对象
        Admin admin =  qr.query(conn, sql, new BeanHandler<Admin>(Admin.class), 29);

        System.out.println(admin);
        conn.close();
    }

    // 2)BeanListHandler: 查询返回list集合,集合元素是指定的对象
    @Test
    public void testQueryMany() throws Exception {
        String sql = "select * from admin";
        conn = JdbcUtil.getConnection();
        QueryRunner qr = new QueryRunner();
        // 查询全部数据
        List<Admin> list = qr.query(conn, sql, new BeanListHandler<Admin>(Admin.class));

        System.out.println(list);
        conn.close();
    }
    @Test
    //  3) ArrayHandler, 查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]
    //  4) ArrayListHandler, 把查询的每一行都封装为对象数组,再添加到list集合中
    //  5) ScalarHandler 查询返回结果记录的第一行的第一列  (在聚合函数统计的时候用)
    //  6) MapHandler  查询返回结果的第一条记录封装为map
    public void testArray() throws Exception {
        String sql = "select * from admin";
        conn = JdbcUtil.getConnection();
        QueryRunner qr = new QueryRunner();
        // 查询
        //Object[] obj = qr.query(conn, sql, new ArrayHandler());
        //List<Object[]> list = qr.query(conn, sql, new ArrayListHandler());
        //Long num = qr.query(conn, sql, new ScalarHandler<Long>());
        Map<String, Object> map = qr.query(conn,sql, new MapHandler());

        conn.close();
    }   
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值