MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Dbutils笔记

Posted on 2011-10-07 17:22 leekiang 阅读(854) 评论(0)  编辑  收藏 所属分类: jdbc、事务、并发
ResultSetHandler的实现类有很多种,涉及数组、map 、javabean等,都接受一个RowProcessor类型的参数来实现结果集向对象的转化。其中RowProcessor的默认实现类为BasicRowProcessor, 用户也可以自己实现RowProcessor。 BasicRowProcessor使用BeanProcessor来完成resultset中的值向javabean的映射,前提要求列名和bean属性名必须一致。

ArrayHandler :将ResultSet中第一行的数据转化成对象数组
ArrayListHandler : 将ResultSet中所有的数据转化成List,List中存放的是Object[]
BeanHandler :将ResultSet中第一行的数据转化成类对象
BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象
MapHandler :将ResultSet中第一行的数据存成Map映射
MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map
ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象
KeyedHandler :将ResultSet中所有数据存成Map,Map中key为某一列的值,value为Map,存放key对应的行的数据
ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object

查询的基本用法:
        String url = "jdbc:mysql://localhost:3306/blog";
        String jdbcDriver 
= "com.mysql.jdbc.Driver";
        String user 
= "root";
        String password 
= "root";
        DbUtils.loadDriver(jdbcDriver);
        Connection conn 
= null;
        
try {
            conn 
= DriverManager.getConnection(url, user, password);
            QueryRunner qr 
= new QueryRunner();
            List  results 
= (List)qr.query(conn, "select  *  from T_USER"new BeanListHandler(User.class) );
        } 
catch (SQLException e) {
            e.printStackTrace();
        } 
finally {
            DbUtils.closeQuietly(conn);
        }
该query方法执行后会自己关闭rs和stmt,但没有关闭连接。
如果传入dataSource, QueryRunner run = new QueryRunner( dataSource ),则执行不含conn参数的查询方法时,会自己关闭连接。
public <T> T query(String sql, ResultSetHandler<T> rsh, Object params)
        
throws SQLException {

        Connection conn 
= this.prepareConnection();

        
try {
            
return this.query(conn, sql, rsh, params);
        } 
finally {
            close(conn);
        }
    }


扩展ApacheCommos的DbUtils以支持字段名下划线映射
对 DBUtils 包中 BeanProcessor 的优化
修改DbUtils支持表名下划线映射
dbutils
Commons DbUtils 源码阅读四
让你的DBUtils支持enum
OSChina底层数据库操作的类(QueryHelper)源码
OSChina底层数据库操作的类(QueryHelper)源码2
基于JDBC+Oracle+Apache Dbutil的泛型DAO
日常数据库操作的烦恼及解药--DbUtils、MyBatis和Hibernate
基于dbutils支持annotation的简易orm


只有注册用户登录后才能发表评论。


网站导航: