DbUtils组件(核心类QueryRunner)学习总结

一.什么是DbUtils组件

Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。

下载组件,引入jar文件:commons-dbutils-1.6.jar 密码:tygh
maven环境配置:

 <dependency>
      <groupId>commons-dbutils</groupId>
      <artifactId>commons-dbutils</artifactId>
      <version>1.6</version>
    </dependency>

二.核心类QueryRunner

带有Connection的

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) 查询方法

不带有Connection的

Int update( String sql, Object param); 执行更新带一个占位符的sql
Int update( String sql, Object… param);执行更新带多个占位符的sql
Int[] batch( String sql, Object[][] params); 批处理

注意: 如果调用DbUtils组件的操作数据库方法,没有传入连接对象,那么在实例化QueryRunner对象的时候需要传入数据源对象: QueryRunner qr = new QueryRunner(DataSource ds);

1.更新操作(包括delete 、insert、 update)

例1:
 @Test
    public void delete() throws Exception {
        String sql = " delete from car where id =? ";
        conn = ConnUtil.getConnextion();
        // 创建DbUtils核心工具类对象
        QueryRunner qr = new QueryRunner();
        qr.update(conn, sql, 3);
        DbUtils.close(conn);
    }

结果测试


例2:
 public void save(CarBean carBean)throws Exception {
        String sql = "INSERT INTO car (carname,carEntity) VALUES(?,?); " ;
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        // 批量插入
        qr.batch(conn, sql, new Object[][]{ {"宝马","2017"},{"奔驰","2017"}  });
        // 关闭
        conn.close();
    }
image.png

2.查询操作

DbUtils提供的封装结果的一些对象:

1)BeanHandler: 查询返回单个对象
2) BeanListHandler: 查询返回list集合,集合元素是指定的对象

  1. ArrayHandler, 查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]
    1. ArrayListHandler, 把查询的每一行都封装为对象数组,再添加到list集合中
    2. ScalarHandler 查询返回结果记录的第一行的第一列 (在聚合函数统计的时候用)
    3. MapHandler 查询返回结果的第一条记录封装为map
  2. MapListHandler 查询返回结果封装为List<map>
  • a.自定义结果集封装数据

@Test
    public void carFind() throws Exception {
        String sql = " select * from car where id = ? ";
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        //查询
        CarBean carBean= qr.query(conn, sql, new ResultSetHandler<CarBean>() {
            //自定义 如何封装一个CarBean对象
            public CarBean handle(ResultSet resultSet) throws SQLException {
                if(resultSet.next()) {
                    CarBean carBean = new CarBean();
                    carBean.setId(resultSet.getInt("id"));
                    carBean.setCarname(resultSet.getString("carname"));
                    carBean.setCarname(resultSet.getString("carEntity"));
                    return carBean;
                }
                return null;
            }
        },1);
        System.out.println(carBean.getId()+""+carBean.getCarname()+""+carBean.getCarEntity());

    }
  • b.查询使用组件提供的BeanHandler结果集对象封装数据

@Test
    public void carFind() throws Exception {
        String sql = " select * from car where id = ? ";
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        //查询
     CarBean carBean = qr.query(conn,sql,new BeanHandler<CarBean>(CarBean.class),2);

      System.out.println(carBean.getId()+" "+carBean.getCarname()+" "+carBean.getCarEntity());
      conn.close();

    }
  • c.查询使用组件提供的BeanListHandler结果集对象封装数据

@Test
    public void carFind() throws Exception {
        String sql = " select * from car where id = ? ";
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        //查询
     List <CarBean> carBean = qr.query(conn,sql,new BeanListHandler<CarBean>(CarBean.class),4);

      System.out.println(carBean.get(0).getId()+" "+carBean.get(0).getCarname()+" "+carBean.get(0).getCarEntity());
      conn.close();

    }
  • d.查询使用组件提供的MapHandler 结果集对象封装数据

@Test
    public void carFind() throws Exception {
        String sql = " select * from car";
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        //查询
     Map<String,Object> carBean = qr.query(conn,sql,new MapHandler());

      System.out.println(carBean);
      conn.close();

    }

image.png
  • e.查询使用组件提供的ScalarHandler 结果集对象封装数据(在聚合函数统计时候用)

@Test
    public void carFind() throws Exception {
        String sql = " select count(*) from car";
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        //查询
     Long carBean = qr.query(conn,sql,new ScalarHandler<Long>());

      System.out.println(carBean);
      conn.close();

    }

文章文集:JavaEE--学习笔记

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • 本文包括:1、DBUtils简介2、DbUtils类3、QueryRunner类4、ResultSetHandle...
    廖少少阅读 20,864评论 1 24
  • JDBC概述 在Java中,数据库存取技术可分为如下几类:JDBC直接访问数据库、JDO技术、第三方O/R工具,如...
    usopp阅读 3,557评论 3 75
  • JDBC框架——DBUtils 本文包括: 1、DBUtils简介 2、DbUtils类 3、QueryRunne...
    加油小杜阅读 915评论 0 1
  • 经过一个多小时,坤仔终于到了他与凌洁两人的小屋,品尝了凌洁为他做的两道小菜,小菜中满是幸福的味道。 吃完饭、刷完碗...
    断指鹤阅读 457评论 1 0