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
查询的基本用法:
如果传入dataSource, QueryRunner run = new QueryRunner( dataSource ),则执行不含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
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,但没有关闭连接。
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);
}
如果传入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);
}
}
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