當柳上原的風吹向天際的時候...

          真正的快樂來源于創造

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks

           

           

           

           

           

           

          Teambiz中三種特殊RowMapper的使用

           

           

           

           

           

           

          作者:何楊

          撰寫日期:2012年2月25日

          版本:1.00

          更新日期:

           

           

           

          第一部分:功能說明

          針對特殊目的的查詢,TeamBiz提供了一系列的RowMapper類以減輕程序員的勞動。

          第二部分:核心組件

          名稱

          路徑

          說明

          IntegerRowMapper

          teambiz\src\com\ibm\heyang\dao\rowmapper\IntegerRowMapper.java

          只需進行數量查詢時,如select count(*) from tb,明確只會返回一行一列,這時建議使用這個類。

          StringRowMapper

          teambiz\src\com\ibm\heyang\dao\rowmapper\StringRowMapper.java

          當只查詢一列時,如select a from table,建議使用這個類。

          UserRowMapper

          eambiz\src\com\ibm\heyang\dao\rowmapper\UserRowMapper.java

          當需要從JDBCTemplate查詢到的鏈表中取出對象時,建議仿照這個類制作自己的RowMapper類

           

          第三部分:各種RowMapper類的具體使用

          1. IntegerRowMapper。

          StringBuilder sb=new StringBuilder();

          sb.append("    select ");

          sb.append("        count(*) as recordcount");

          sb.append("    from teambiz_menu");

          String sql=sb.toString();

          List<?> ls=this.getJdbcTemplate().query(sql, new IntegerRowMapper());

          Integer count=(Integer)(ls.get(0));

          以上代碼路徑:teambiz\src\com\ibm\heyang\dao\MenuDao.java中isNoMenu函數。

           

          2. StringRowMapper

          StringBuilder sb=new StringBuilder();

          sb.append("    select");

          sb.append("        t01.group_name");

          sb.append("    from");

          sb.append("        sys_group");

          sb.append("        t01,");

          sb.append("        sys_user");

          sb.append("        t02");

          sb.append("    where");

          sb.append("        t01.groupid=t02.groupid");

          sb.append("        and");

          sb.append("        t02.userid="+userid+"");

          String sql=sb.toString();

           

          // 查詢

          List<?> ls = this.getJdbcTemplate().query(sql,new StringRowMapper());

          最后得到的ls就是一個包含字符串元素的鏈表,要取值對其進行遍歷即可。

          3. UserRowMapper的使用示例

          StringBuilder sb=new StringBuilder();

          sb.append("    select ");

          sb.append("          ID, ");

          sb.append("          name, ");

          sb.append("          email, ");

          sb.append("          pswd, ");

          sb.append("          groupName, ");

          sb.append("          companyName,");

          sb.append("          level");

          sb.append("    from teambiz_user");

          sb.append("    where name='"+name+"' and ");

          sb.append("          pswd='"+pswd+"' ");

          String sql=sb.toString();

           

          List<?> ls = this.getJdbcTemplate().query(sql, (new UserRowMapper()));

           

          if(ls.size()==1){

                      return (User)ls.get(0);

          }else{

                      throw new Exception("用戶名或密碼錯誤!");

          }

          以上代碼路徑:teambiz\src\com\ibm\heyang\dao\UserDao.java中的getUserByNamePswd函數。

           

          第四部分:小結

          對數據庫進行各種查詢是程序員的常見任務之一,如果能適當運用以上類,能減少代碼的重復程度及減輕他們的勞動強度。

          posted on 2012-02-29 10:34 何楊 閱讀(394) 評論(0)  編輯  收藏 所屬分類: Teambiz
          主站蜘蛛池模板: 襄樊市| 庐江县| 商都县| 宜兰市| 丘北县| 安岳县| 轮台县| 惠来县| 沽源县| 留坝县| 酒泉市| 北川| 阜城县| 昆明市| 德兴市| 陇川县| 孟州市| 合阳县| 泽普县| 廊坊市| 石泉县| 曲水县| 哈密市| 比如县| 嘉禾县| 富源县| 大洼县| 武清区| 喀喇| 都安| 新建县| 清水县| 句容市| 黑龙江省| 安庆市| 临桂县| 深泽县| 乌兰察布市| 南江县| 通渭县| 丹凤县|