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

          Dbutils筆記

          Posted on 2011-10-07 17:22 leekiang 閱讀(863) 評論(0)  編輯  收藏 所屬分類: jdbc、事務(wù)、并發(fā)
          ResultSetHandler的實現(xiàn)類有很多種,涉及數(shù)組、map 、javabean等,都接受一個RowProcessor類型的參數(shù)來實現(xiàn)結(jié)果集向?qū)ο蟮霓D(zhuǎn)化。其中RowProcessor的默認(rèn)實現(xiàn)類為BasicRowProcessor, 用戶也可以自己實現(xiàn)RowProcessor。 BasicRowProcessor使用BeanProcessor來完成resultset中的值向javabean的映射,前提要求列名和bean屬性名必須一致。

          ArrayHandler :將ResultSet中第一行的數(shù)據(jù)轉(zhuǎn)化成對象數(shù)組
          ArrayListHandler : 將ResultSet中所有的數(shù)據(jù)轉(zhuǎn)化成List,List中存放的是Object[]
          BeanHandler :將ResultSet中第一行的數(shù)據(jù)轉(zhuǎn)化成類對象
          BeanListHandler :將ResultSet中所有的數(shù)據(jù)轉(zhuǎn)化成List,List中存放的是類對象
          MapHandler :將ResultSet中第一行的數(shù)據(jù)存成Map映射
          MapListHandler :將ResultSet中所有的數(shù)據(jù)存成List。List中存放的是Map
          ColumnListHandler :將ResultSet中某一列的數(shù)據(jù)存成List,List中存放的是Object對象
          KeyedHandler :將ResultSet中所有數(shù)據(jù)存成Map,Map中key為某一列的值,value為Map,存放key對應(yīng)的行的數(shù)據(jù)
          ScalarHandler :將ResultSet中一條記錄的其中某一列的數(shù)據(jù)存成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方法執(zhí)行后會自己關(guān)閉rs和stmt,但沒有關(guān)閉連接。
          如果傳入dataSource, QueryRunner run = new QueryRunner( dataSource ),則執(zhí)行不含conn參數(shù)的查詢方法時,會自己關(guān)閉連接。
          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);
          ????????}
          ????}


          擴(kuò)展ApacheCommos的DbUtils以支持字段名下劃線映射
          對 DBUtils 包中 BeanProcessor 的優(yōu)化
          修改DbUtils支持表名下劃線映射
          dbutils
          Commons DbUtils 源碼閱讀四
          讓你的DBUtils支持enum
          OSChina底層數(shù)據(jù)庫操作的類(QueryHelper)源碼
          OSChina底層數(shù)據(jù)庫操作的類(QueryHelper)源碼2
          基于JDBC+Oracle+Apache Dbutil的泛型DAO
          日常數(shù)據(jù)庫操作的煩惱及解藥--DbUtils、MyBatis和Hibernate
          基于dbutils支持annotation的簡易o(hù)rm

          主站蜘蛛池模板: 南京市| 三江| 崇仁县| 萨迦县| 嵩明县| 安仁县| 唐河县| 正定县| 如东县| 赣州市| 吉木萨尔县| 大竹县| 巴南区| 昌平区| 顺义区| 盱眙县| 通州市| 淮安市| 科尔| 普宁市| 漳平市| 白城市| 台南市| 基隆市| 金溪县| 浪卡子县| 深水埗区| 南陵县| 潞西市| 崇礼县| 张家界市| 安徽省| 镇坪县| 武安市| 商丘市| 慈利县| 德昌县| 洱源县| 贡嘎县| 城口县| 大新县|