java基础之JDBC九:DbUtils的简介及使用
Posted 剑来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础之JDBC九:DbUtils的简介及使用相关的知识,希望对你有一定的参考价值。
DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。
使用步骤:
A: 获取可以执行SQL语句的对象. public QueryRunner(); public QueryRunner(DataSource ds); //如果需要用到连接池对象了, 会自动从数据库连接池中获取. B: 执行SQL语句, 获取结果集. *** query(String sql,ResultSetHandler rsh, Object... values); //执行查询语句 ResultSetHandler: //是一个接口, 表示对 结果集的处理方式, 传入的参数不同, 返回值也不同. int update(String sql,Object... values); //执行更新语句 C: 操作结果集. //可变参数的底层其实是一个: 数组. ResultSetHandler接口的子类: ArrayHandler 将结果集第一行转成对象数组 Object[] ArrayListHandler List<Object[]> 将结果集中的每一行数据都转成一个对象数组,再将转成的多个对象数组存放到List中 BeanHandler 将结果集第一行数据封装到一个对应的业务类实例中 // new BeanHandler<业务类的类型>(业务类的字节码文件对象); // new BeanHandler<Ledger>(Ledger.class); BeanListHandler 将结果集中的每一行数据都封装到一个对应的业务类实例中,再将多个业务类实例对象存放到List里。 // new BeanListHandler<业务类的类型>(业务类的字节码文件对象); // new BeanListHandler<Ledger>(Ledger.class); MapHandler 将结果集中的第一行数据封装到一个Map中,key是列名 String ,value是对应的值 Obje MapListHandler 将结果集中的每一行数据都封装到一个Map里,然后再将多个Map存放到List ColumnListHandler 将结果集中的指定列的数据存储到List集合 //new ColumnListHandler<该列的类型_写的是引用类型>(列名); //new ColumnListHandler<Double>("money"); ScalarHandler 进行单值查询,如:select count(*) from //一行一列 //new ScalarHandler<该列的类型_写的是引用类型>(列名); //new ScalarHandler<Long>("counts"); 求满足条件的数据共有多少行 KeyedHandler 将结果集中的每一行数据都封装为一个Map(Map<String,Object>), 再将这些Map再存到一个Map里,其key为KeyedHandler指定的列, 如果没有指定则使用第一个查询的字段。 /* 1 2 3 4 Map <String,Map<String,Object>> map= qr.query(conn, sql, new KeyedHandler<String>("lid")); 1:代表的是 传入的指定的列名(要求不能重复,一般传的是主键) 2:代表的是 数据库表中的每一行数据(列名做键,具体的数据做值) 3:代表的是 传入的指定的列的 数据类型 4:代表的是 传入的指定的列 */
使用DbUtils执行更新操作:
/** * 使用DbUtils执行更新操作 * 使用之前需要导入jar包 */ public class Test06 { public static void main(String[] args) { //获取可执行sql语句的对象 //这里构造函数里需要传一个连接池对象 我们使用之前封装的C3P0简单工具类获取一个连接池对象 QueryRunner qr = new QueryRunner(C3P0SimpleUtils.getDataSource()); //执行sql语句 获取返回结果 String sql = "UPDATE users SET psw = ? WHERE uid = ?"; try { Object[] obj = {null, "亚索", "hasagei"}; int num = qr.update(sql, obj); System.out.println(num > 0 ? "添加成功" : "添加失败"); } catch (SQLException e) { e.printStackTrace(); } //不用再close了 因为DbUtils帮我们做了 } }
使用DbUtils执行查询操作:
以上是关于java基础之JDBC九:DbUtils的简介及使用的主要内容,如果未能解决你的问题,请参考以下文章
10.25JDBC之Apache-DBUtils实现CRUD操作