MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Dbutils筆記

          Posted on 2011-10-07 17:22 leekiang 閱讀(863) 評論(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

          主站蜘蛛池模板: 加查县| 淄博市| 上饶市| 酒泉市| 中江县| 乡城县| 平果县| 吴桥县| 四平市| 宁南县| 德保县| 安龙县| 南郑县| 盘山县| 罗田县| 宽城| 抚顺县| 图木舒克市| 甘谷县| 金门县| 驻马店市| 西畴县| 民勤县| 辽宁省| 都昌县| 寿光市| 罗田县| 刚察县| 德保县| 崇明县| 甘谷县| 莲花县| 明星| 汕尾市| 枝江市| 明水县| 黔西县| 怀柔区| 揭阳市| 永靖县| 河间市|