怎样使用DBUtils?

    科技2025-12-27  9

    怎样使用DBUtils?

    1. 什么是DBUtils?

    Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,由于JDBC资源清理非常的繁琐且容易出错,使用它能够简化JDBC应用程序的开发,抽出复杂重复的代码,同时也不会影响程序的性能,便于编程人员进行数据库的操作。

    2. DBUtils的优点

    1)DBUtils对JDBC的编程步骤进行简单的封装,只需要提供连接池对象或者是连接对象即可; 2)对于数据表的读操作,它可以把结果转换成List,Array等java对象,便于程序员操作; 3)对于数据表的写操作,也变得很简单(只需写sql语句)。

    3. DbUtils中的核心组件

    QueryRunner,替换了原生jdbc中的语句平台(Statement 以及 PreparedStatement),是用来简化SQL语句操作的,可以连接参数,可以有效的防止sql注入。ResultSetHandler,这个接口是针对于封装查询结果集的,用于定义select操作后面,怎么样进行封装及结果集。它还提供了八大结果集实现类,可以保证不管是单行单列、多行多列、单列多行、单行多列都有对应的结果集。DbUtils,主要用来释放资源、处理事务。但需要注意的是DbUtils类是一个工具类,定义了关闭资源与事务处理的方法。

    4. 核心组件简介

    QueryRunner

    1)QueryRunner(DataSource ds):传入参数为连接池,返回QueryRuner对象 2)update(String sql,Object params):执行insert update delete操作(创建,修改,删除等操作)注解:括号内的是sql语句和sql语句当中的问号指定的值。 3)query(String sql,ResultSetHandler rsh,Object… params):执行select操作注解:ResultSetHandler rsh是用来将查询结果封装成对象 简要说明:QueryRunner的update()方法可以用来执行insert、update、delete语句。 增删改模板代码1

    @Test public void fun1( throws SQLException { QueryRunner qr = newQueryRunner(; string sql = "insert into user values(?,?,?)"; qr.update(dbcutils.getconnection(), sql,...params: "u1""zhangSan""123"); }

    增删改模板代码2

    @Test public void fun2(throws sQLException { QueryRunner qr = newQueryRunner(dbcutils.getDatasource()).string sql = "insert into user values(?,?,?)";qr.update(sql,...params: "u1""zhangsan""123");}

    ResultSetHandler

    DBUtils提供了一个接口ResultSetHandler,它就是用来将ResultSet转换成目标类型的工具。同时提供了很多个ResultSetHandler接口的实现,这些实现基本够用,通常不用自己去实现了。 相关实现类: 1)MapHandler:单行处理器,把结果集转换成Map<tring,Object>集合,其中列名为键。 2)MapListHandler:多行处理器,把结果集转换成List<Map<String,Object>>; 3)BeanHandler:单行处理器,把结果集转换成Bean对象,该处理器需要Class参数,即Bean的类型; 4)BeanListHandler:多行处理器,把多行结果集转换成List多个对象; 5)ColumnListHandler:多行单列处理器,把结果集转换成List,使用ColumnListHandler时需要指定某一列的名称或编号,例如: new ColumListHandler(“name”)表示把name列的数据放到List中。 6)ScalarHandler:单行单列处理器,把结果集转换成object。一般用于聚集查询,例如select count(*) from tab_student。 关于MapListHandler的示例: public

    static void MapListHandler() { QueryRunner qr = new QueryRunner(); String sql = "select * from student where sno = ?"; try { Connection conn = JDBCUtils.getConnection(); List<Map<String, Object>> query = qr.query(conn, sql, new MapListHandler(),110); for (Map<String, Object> map : query) { System.out.println(map); } DbUtils.closeQuietly(conn); } catch (SQLException e) { e.printStackTrace(); } }

    DBUtils

    1)sclose(): DbUtils类提供了三个重载的关闭方法。这些方法检查所提供的参数是不是NULL,如果不是的话,它们就关闭连接、声明和结果集(ResultSet)。 2)CloseQuietly: CloseQuietly这一方法不仅能在连接、声明或者结果集(ResultSet)为NULL情况下避免关闭,还能隐藏一些在程序中抛出的SQLEeception。如果你不想捕捉这些异常的话,这对你是非常有用的。 在重载CloseQuietly方法时,特别有用的一个方法是closeQuietly(Connection conn,Statement stmt,ResultSet rs),这是因为在大多数情况下,连接、声明和结果集(ResultSet)是你要用的三样东西,而且在最后的块你必须关闭它们。使用这一方法,你最后的块就可以只需要调用这一方法即可。 3)CommitAndCloseQuietly(Connection conn): 这一方法用来提交连接,然后关闭连接,并且在关闭连接时不向上抛出在关闭时发生的一些SQL异常。 4)LoadDriver(String driveClassName):这一方法装载并注册JDBC驱动程序,如果成功就返回TRUE。使用这种方法,你不需要去捕捉这个异常ClassNotFoundException。使用loadDrive方法,编码就变得更容易理解,你也就得到了一个很好的Boolean返回值,这个返回值会告诉你驱动类是不是已经加载成功了。

    Processed: 0.036, SQL: 9