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

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

  

原文地址:https://www.cnblogs.com/mywy/p/5044791.html