當(dāng)柳上原的風(fēng)吹向天際的時(shí)候...

          真正的快樂(lè)來(lái)源于創(chuàng)造

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks

           

           

           

           

           

           

          Teambiz中三種特殊RowMapper的使用

           

           

           

           

           

           

          作者:何楊

          撰寫日期:2012年2月25日

          版本:1.00

          更新日期:

           

           

           

          第一部分:功能說(shuō)明

          針對(duì)特殊目的的查詢,TeamBiz提供了一系列的RowMapper類以減輕程序員的勞動(dòng)。

          第二部分:核心組件

          名稱

          路徑

          說(shuō)明

          IntegerRowMapper

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

          只需進(jìn)行數(shù)量查詢時(shí),如select count(*) from tb,明確只會(huì)返回一行一列,這時(shí)建議使用這個(gè)類。

          StringRowMapper

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

          當(dāng)只查詢一列時(shí),如select a from table,建議使用這個(gè)類。

          UserRowMapper

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

          當(dāng)需要從JDBCTemplate查詢到的鏈表中取出對(duì)象時(shí),建議仿照這個(gè)類制作自己的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函數(shù)。

           

          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就是一個(gè)包含字符串元素的鏈表,要取值對(duì)其進(jìn)行遍歷即可。

          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("用戶名或密碼錯(cuò)誤!");

          }

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

           

          第四部分:小結(jié)

          對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種查詢是程序員的常見任務(wù)之一,如果能適當(dāng)運(yùn)用以上類,能減少代碼的重復(fù)程度及減輕他們的勞動(dòng)強(qiáng)度。

          posted on 2012-02-29 10:34 何楊 閱讀(394) 評(píng)論(0)  編輯  收藏 所屬分類: Teambiz
          主站蜘蛛池模板: 宝鸡市| 肇庆市| 雅江县| 宣化县| 阜新市| 南城县| 大化| 鄂伦春自治旗| 兴安盟| 沈阳市| 泗水县| 亚东县| 会昌县| 达拉特旗| 晋宁县| 民勤县| 建德市| 云南省| 台东县| 泗洪县| 秭归县| 华亭县| 分宜县| 灵山县| 绥阳县| 武胜县| 丹棱县| 社旗县| 施甸县| 城固县| 邢台县| 巴里| 正蓝旗| 台安县| 山西省| 武隆县| 麟游县| 凌源市| 临沂市| 吴堡县| 海城市|