<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品白丝在线观看 | 国产A∨免费精品视频| 搡女人免费视频大全| 亚洲国产精品白丝在线观看| 91青青青国产在观免费影视| 亚洲美女自拍视频| 国产免费不卡视频| 国产婷婷综合丁香亚洲欧洲| 成人免费无遮挡无码黄漫视频| 亚洲精品免费网站| 日本免费福利视频| 日韩少妇内射免费播放| 国产亚洲日韩一区二区三区| 日批视频网址免费观看| 久久久婷婷五月亚洲97号色| 无码国产精品一区二区免费式直播 | 国产精品亚洲成在人线| 国产午夜精品久久久久免费视| 亚洲国产精品无码久久久蜜芽| 无码精品人妻一区二区三区免费看 | 日韩视频免费在线| 一级毛片a免费播放王色电影 | 亚洲AV日韩精品久久久久久久| 蜜臀AV免费一区二区三区| 亚洲人成毛片线播放| 国产成人在线观看免费网站 | 亚洲一区二区无码偷拍| 亚洲AⅤ视频一区二区三区| 久久九九免费高清视频| 91亚洲国产成人精品下载| 在线观看成人免费视频| 一个人看www免费高清字幕| 亚洲男人都懂得羞羞网站| 免费看无码自慰一区二区| 好猛好深好爽好硬免费视频| 亚洲永久中文字幕在线| 一级毛片直播亚洲| 69pao强力打造免费高清| jzzijzzij在线观看亚洲熟妇| 久久精品7亚洲午夜a| 免费黄色毛片视频|