随笔 - 81  文章 - 0  评论 - 1  阅读 - 36430

DBUtils

 

1.JDBC的问题:

1、操作过程复杂,代码操作一个模式,大量的重复。
2、结果集难以处理,需要将拿到的ResultSet一个一个转成JavaBean,后来形成List,太麻烦了。
3、到处都强制检查SQLException,影响代码的美观和可读性。

 

2.dbutils API

------------------------------------
包org.apache.commons.dbutils 
        DbUtils是一个为简化JDBC操作的小类库。
接口摘要
ResultSetHandler 将ResultSet转换为别的对象的工具。
RowProcessor 将ResultSet行转换为别的对象的工具。 
类摘要
BasicRowProcessor RowProcessor接口的基本实现类。 
BeanProcessor BeanProcessor匹配列明到Bean属性名,并转换结果集列到Bean对象的属性中。
DbUtils 一个JDBC辅助工具集合。 
ProxyFactory 产生JDBC接口的代理实现。 
QueryLoader 属性文件加载器,主要用于加载属性文件中的 SQL 到内存中。 
QueryRunner 使用可插拔的策略执行SQL查询并处理结果集。
ResultSetIterator 包装结果集为一个迭代器。 
  
------------------------------------
包org.apache.commons.dbutils.handlers 
        ResultSetHandler接口的实现类
类摘要
AbstractListHandler 将ResultSet转为List的抽象类
ArrayHandler 将ResultSet转为一个Object[]的ResultSetHandler实现类
ArrayListHandler 将ResultSet转换为List<Object[]>的ResultSetHandler实现类
BeanHandler 将ResultSet行转换为一个JavaBean的ResultSetHandler实现类
BeanListHandler 将ResultSet转换为List<JavaBean>的ResultSetHandler实现类
ColumnListHandler 将ResultSet的一个列转换为List<Object>的ResultSetHandler实现类
KeyedHandler 将ResultSet转换为Map<Map>的ResultSetHandler实现类
MapHandler 将ResultSet的首行转换为一个Map的ResultSetHandler实现类
MapListHandler 将ResultSet转换为List<Map>的ResultSetHandler实现类
ScalarHandler 将ResultSet的一个列到一个对象。
 
------------------------------------
包org.apache.commons.dbutils.wrappers 
        添加java.sql类中功能包装类。
类摘要
SqlNullCheckedResultSet 在每个getXXX方法上检查SQL NULL值的ResultSet包装类。
StringTrimmedResultSet 取出结果集中字符串左右空格的ResultSet包装类。

 

3.DEMO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void test_insert() throws SQLException {
             System.out.println("-------------test_insert()-------------");
             //创建连接 ,ConnTools为自己定义的connection工具
             Connection conn = ConnTools.makeConnection();
             //创建SQL执行工具
             QueryRunner qRunner = new QueryRunner();
             //执行SQL插入
             int n = qRunner.update(conn, "insert into user(name,pswd) values('iii','iii')");
             System.out.println("成功插入" + n + "条数据!");
             //关闭数据库连接
             DbUtils.closeQuietly(conn);
     }
 
     public static void test_find() throws SQLException {
             System.out.println("-------------test_find()-------------");
             //创建连接
             Connection conn = ConnTools.makeConnection();
             //创建SQL执行工具
             QueryRunner qRunner = new QueryRunner();
             //执行SQL查询,并获取结果
             List<User> list = (List<User>) qRunner.query(conn, "select id,name,pswd from user", new BeanListHandler(User.class));
             //输出查询结果
             for (User user : list) {
                     System.out.println(user);
             }
             //关闭数据库连接
             DbUtils.closeQuietly(conn);
     }

  

 

posted on   Moriatry  阅读(199)  评论(0编辑  收藏  举报
努力加载评论中...
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示