JDBC优化  -Dbutils组件

作者: Dl_毛良伟 | 来源:发表于2017-05-02 14:52 被阅读54次
  • DBUtils是Apache组织提供的一个能方便的对各种数据库进行操作的开源类库,它是一个对数据库操作的类库,把对数据库操作的JDBC代码重新进行了封装,简化了我们使用JDBC代码操作数据库的繁琐度,减少重复代码的数量。
    组建获取:Dbutils点击下载

  • DBUtils类库中包括若干类和接口,最重要的是Dbutils、QueryRunner、MapListHandler、BeanListHandler类和ResultSetHandler接口。

  • DbUtils类: DbUtils主要包含了获得数据库连接和关闭ResultSet、Statement、Connection对象的方法,它所定义的方法都是静态方法。

  • close()方法:DbUtils类有close(Conneciton conn)、close(ResultSet rs)和close(Statement stmt) 三个重载的close()方法,可以分别关闭Connection、ResultSet和Statement对象,并且会在关闭这些对象之前检查所关闭的对象是不是null,不为null才会关闭所对应的对象。

  • CloseQuietly()方法:CloseQuietly()方法对应close()方法也有若干个重载的方法,作用也与close()方法相同,区别是在关闭所对应对象的过程中,closeQuietly()方法会隐藏可能抛出的SQLException类型的异常。它还有一个closeQuietly(Conneciton conn,Statement stmt,ResultSet rs)重载方法,可以一次关闭三个对象。

  • LoadDriver()方法: 加载并注册JDBC驱动程序的方法,该方法返回一个boolean类型的变量,true表示成功加载,false表示加载失败,使用这种方法,不需要捕获ClassNotFoundException异常。

  • ResultSetHandler接口: 该接口是DbUtils组件中非常核心的接口,实现这个接口的类,可以把单一的ResultSet结果集对象转换成其他类型的对象,例如List、Map和数 组对象,转换后的对象更容易对返回的数据库记录进行进一步的操作处理,也更方便数据库的记录传递。这个接口中只定义了Object handle(ResultSet rs)一个方法,所有实现该接口的类,都需要重写这个方法,这个方法接收ResultSet类型的对象,把它转换成同样包含数据库记录的其他类型的对象。
    Demo

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

        }, 7);

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

    }
查询id为7的数据
  • MapListHandler类:这个类是ResultSet接口的实现类,它把ResultSet结果集中的每一条记录转换成一个Map对象,其中字段名作为Key值,字段值作为Value值,再把所有的代表不同记录的Map对象放到一个List对象中返回。

  • BeanListHandler类:这个类也是ResultSet接口的实现类,它可以把ResultSet结果集中的每一条记录转换成一个自定义的JavaBean对象,再把所有的代表不同记录的JavaBean对象放到一个List对象中返回。
    Demo

    @Test
    public void upDateTest()throws SQLException {
        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();
    }

image.png
  • QueryRunner类:这个类是用来执行sql语句的。QueryRunner类既可以使用常规方式获得的数据库连接对象,还可以使用通过数据源获得的连接对象。类中重要方法如下:
  1. query(Connection conn,String sql,Object[ ] params,ResultSetHandler rsh) 这个方法执行数据库查询语句,SQL语句中的参数通过params数组传递,获得的数据库记录保存到ResultSetHandler类型的rsh对象中,并且把这个对象作为方法的返回值进行返回。这个方法内部会把所使用的ResultSet对象和PrepareStatement关闭,但是Connection对象还需要调用者自行负责关闭。
  2. query(String sql,Object[ ] params,ResultSetHandler rsh) 这个方法作用与上面方法一样,不同的地方是,这个方法使用Connection对象是通过当前QueryRunner对象所封装的数据源自动获得的。方法内部会关闭连接对象,不需要方法嗲用者自己关闭连接对象。
  3. query(Connection conn,String sql,ResultSetHandler rsh) 这个方法执行不需要参数的SQL查询语句。
删除id为8的数据
代码部分
    /**
     * 删除
     * @throws SQLException
     */
    @Test
    public void update()throws SQLException {
        String sql = "delete from admin where id=?";
        conn = JdbcUtil.getConnection();
        QueryRunner qr = new QueryRunner();
        qr.update(conn, sql, 8);
    }
id为8的数据删除成功
  1. update(Connection conn,String sql,Object[ ] params) 这个方法主要执行insert、update和delete等不需要返回结果集对象的SQL语句,方法调用者需要自己负责Connection对象的关闭
  2. update(String sql,Object[ ] params) 这个方法使用的连接对象是通过数据源所获得的,方法内部会关闭连接对象,不需要调用自己关闭连接对象。

相关文章

  • JDBC优化  -Dbutils组件

    DBUtils是Apache组织提供的一个能方便的对各种数据库进行操作的开源类库,它是一个对数据库操作的类库,把对...

  • commons-dbutils 使用

    commons-dbutils 是什么 commons-dbutils 有什么用 简化jdbc编码 优化数据库结果...

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

    一.什么是DbUtils组件 Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开...

  • DBUtils 基础

    DBUtils DbUtils介绍 DbUtils库是一套小巧的用来简化 JDBC 调用的库。JDBC源代码库单调...

  • JDBC框架——DBUtils

    JDBC框架——DBUtils 本文包括: 1、DBUtils简介 2、DbUtils类 3、QueryRunne...

  • 高级应用--JDBC(二)

    封装JDBC抽取DBUtils JDBC事务 数据库连接池讲解 7.封装JDBC抽取DBUtils 为了使得编辑参...

  • Hibernate

    为什么要使用hibernate,jdbc+dbutils不是挺好的吗? 1、回顾一下jdbc和dbutils 2、...

  • 09_DBUtils & 连接池

    DBUtils 如果使用过JDBC开发,代码的冗余量太多,为了简化JDBC开发,我们使用DBUtils工具类com...

  • 【JavaWeb】DbUtils入门之QueryRunner

    DbUtils简介 根据官网的介绍,DbUtils是一种 JDBC Utility Component (翻译过来...

  • Java篇-DBUtils与连接池

    一 : DBUtils DBUtils就是为了简化JDBC的快发而产生的开发工具包.对JDBC的一种封装. 核心功...

网友评论

    本文标题:JDBC优化  -Dbutils组件

    本文链接:https://www.haomeiwen.com/subject/ssyftxtx.html