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