<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    真正的快樂來源于創造

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

    幾個使用JDBC Template常用的工具類

    第一:IntegerRowMapper

    代碼:

    public class IntegerRowMapper implements RowMapper {

          public Object mapRow(ResultSet rs, int index) throws SQLException {

                Integer c = new Integer(0);

                c = rs.getInt(1);

                return c;

          }

    }

    用途:

    SQL只是取數量時,可以采用這個類減少一些代碼,示例如下:

    StringBuilder sb=new StringBuilder();

    sb.append("    SELECT");

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

    sb.append("    FROM");

    sb.append("        tb_contract");

    sb.append("    WHERE");

    sb.append("        contract_id='"+id+"' ");

    String sql=sb.toString();

     

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

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

     

    第二:StringRowMapper

    代碼:

    public class StringRowMapper implements RowMapper {

          public Object mapRow(ResultSet rs, int index) throws SQLException {

                String c=new String(rs.getString(1));

            return c;

          }

    }

    用途:當SQL語句只返回一個字符串類型的定值時,采用這個類能減少部分代碼,示例如下:

    StringBuilder sb=new StringBuilder();

    sb.append("    select");

    sb.append("         user_name as name");

    sb.append("    from");

    sb.append("        TB_SYS_USER");

    sb.append("    where");

    sb.append("         user_id='"+userId+"'");

    String sql=sb.toString();

     

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

    String usrName=(String)ls.get(0);

     

    第三:RecordCounter

    代碼:

    public class RecordCounter{

          private String sql;

         

          private JdbcTemplate jdbcTemplate;

         

          /**

           * 構造函數

           * @param sql

           * @param jdbcTemplate

           */

          public RecordCounter(String sql,JdbcTemplate jdbcTemplate){

                this.sql=sql;

                this.jdbcTemplate=jdbcTemplate;

          }

         

          /**

           * 得到SQL語句查詢到的記錄數,對外的關鍵語句

           * @author: 何楊(heyanghy@cn.ibm.com

           * @date : Apr 23, 2011

           * @time : 11:09:35 AM

           * @return

           */

          public int getCount() throws Exception{

                StringBuilder sb=new StringBuilder();

                sb.append("    select ");

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

                sb.append("    from ("+sql+") t ");

                String sql=sb.toString();

               

                class MyRowMapper implements RowMapper {

                      public Object mapRow(ResultSet rs, int index) throws SQLException {

                            Integer c = new Integer(0);

     

                            c=rs.getInt("recordCount");

     

                            return c;

                      }

                }

     

                List<?> ls = jdbcTemplate.query(sql, (new MyRowMapper()));

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

               

                return i.intValue();

          }

    }

    用途:分頁時常需要得到SQL語句查詢得到的總記錄數,采用這個類可以減少部分代碼。

    示例:略

     

    第四:MapRowMapper

    代碼:

    public class MapRowMapper implements RowMapper {

          public Object mapRow(ResultSet rs, int index) throws SQLException {

                List<Map<String,String>> ls=new ArrayList<Map<String,String>>();

           

            int n=rs.getMetaData().getColumnCount();

           

            for(int i=1;i<=n;i++){

                try{

                      Map<String,String> map=new HashMap<String,String>();

                      map.put(rs.getMetaData().getColumnName(i).toLowerCase(), rs.getString(i));

                     

                      ls.add(map);

                }

                catch(Exception ex){

                      continue;

                }

            }

           

            return ls;

          }

    }

    用途:一般來說,當查詢只會返回一條記錄時,如按ID得到一條記錄,會使用這個Mapping器。得到的對象可以用來給對象賦值。示例如下:

    StringBuilder sb=new StringBuilder();

    sb.append("    select");

    sb.append("        *");

    sb.append("    from");

    sb.append("        TB_CONTRACT ");

    sb.append("    where");

    sb.append("        contract_id='"+id+"'");

    String sql=sb.toString();

     

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

     

    Map<String,String> map = new HashMap<String,String>();

     

    List<?> ls2=(List<?>)ls.get(0);

     

    for(Object obj:ls2){

          Map<String,String> mapTemp=(Map<String,String>)obj;

         

          map.putAll(mapTemp);

    }

    第五:NameValueRowMapper

    代碼:

    public class NameValueRowMapper implements RowMapper {

          public Object mapRow(ResultSet rs, int index) throws SQLException {

                List<NameValue> ls=new ArrayList<NameValue>();

           

            int n=rs.getMetaData().getColumnCount();

           

            for(int i=1;i<=n;i++){

                NameValue nv=new NameValue(rs.getMetaData().getColumnName(i).toLowerCase(),rs.getString(i));

                ls.add(nv);

            }

           

            return ls;

          }

    }

     

    public class NameValue extends BaseDomainObj{

          private String name;

          private String value;

         

          /**

           * 無參數構造函數

           */

          public NameValue(){

               

          }

         

          /**

           * 雙參數構造函數

           * @param name

           * @param value

           */

          public NameValue(String name,String value){

                this.name=name;

                this.value=value;

          }

         

          public String getName() {

                return name;

          }

          public void setName(String name) {

                this.name = name;

          }

          public String getValue() {

                return value;

          }

          public void setValue(String value) {

                this.value = value;

          }

         

          public String asXML() {

                StringBuilder sb=new StringBuilder();

               

                sb.append("<"+name+">");

                sb.append(StringUtils.isBlank(value)?"-":value);

                sb.append("</"+name+">");

               

                return sb.toString();

          }

    }

     

    public class NameValueList extends BaseDomainObj{

          // 內含NameValue的鏈表

          private List<?> list;

         

          /**

           * 無參數構造函數

           */

          public NameValueList(){

               

          }

         

          /**

           * 帶參數構造函數

           * @param list

           */

          public NameValueList(List<?> list){

                this.list=list;

          }

         

          @SuppressWarnings("unchecked")

          public String asXML() {

                StringBuilder sb=new StringBuilder();

               

               

                for(Object obj:list){

                      List<NameValue> ls=(List<NameValue>)obj;

                     

                      sb.append("<node>");

                      for(NameValue nv:ls){

                            sb.append(nv.asXML());

                      }

                      sb.append("</node>");

                }

               

               

                return sb.toString();

          }

     

          public void setList(List<?> list) {

                this.list = list;

          }

     

          public List<?> getList() {

                return list;

          }

    }

    說明:將一行記錄轉化成一個包含鍵值對的鏈表,在NameValueList的幫助下能方便的把從數據庫得到的行集轉化為一段XML

    StringBuilder sb=new StringBuilder();

    sb.append("    SELECT ");

    sb.append("        *");

    sb.append("    FROM tb_contract ");

    sb.append("    WHERE contract_id='"+id+"'");

    String sql=sb.toString();

     

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

     

    NameValueList list=new NameValueList(ls);

     

    String xml=list.asXML();

     

     

     

     

     

    posted on 2011-06-01 18:17 何楊 閱讀(545) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产综合无码一区| 免费一看一级毛片全播放| 亚洲国产综合91精品麻豆| 91成人免费福利网站在线| 拍拍拍无挡免费视频网站| 亚洲va中文字幕无码| 亚洲精品日韩专区silk| 青青草国产免费国产是公开| 日本免费一区二区三区最新 | 亚洲色图在线观看| 日本卡1卡2卡三卡免费| 免费a级毛片无码a∨性按摩| 337P日本欧洲亚洲大胆艺术图| 97av免费视频| 亚洲人成影院午夜网站| 手机看片久久国产免费| 欧亚一级毛片免费看| 国产亚洲综合成人91精品| 99在线视频免费| 精品亚洲成A人无码成A在线观看 | 亚洲视频网站在线观看| 中文字幕不卡免费高清视频| 亚洲无线观看国产精品| 91久久青青草原线免费| 亚洲综合偷自成人网第页色| 全部免费毛片在线播放| 亚洲国产成AV人天堂无码| 四虎永久在线精品免费观看地址| 亚洲日本va在线观看| 国产一级淫片a视频免费观看| 精品无码国产污污污免费网站国产| 亚洲AV无码不卡在线观看下载| 成人片黄网站色大片免费观看cn| 久久亚洲精品人成综合网| 最近的2019免费中文字幕| 亚洲福利在线观看| 香蕉高清免费永久在线视频| 在线综合亚洲欧洲综合网站| 亚洲精品456播放| 91高清免费国产自产| 有色视频在线观看免费高清在线直播|