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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲?v无码国产在丝袜线观看| 中文在线免费视频| 日本XXX黄区免费看| 毛片在线看免费版| 亚洲五月综合网色九月色| 最近高清中文字幕免费| 亚洲美女视频网址| 无码永久免费AV网站| 国产国拍精品亚洲AV片| 两个人日本WWW免费版 | 在线免费不卡视频| 亚洲国产成人手机在线观看 | 222www在线观看免费| 亚洲视频在线不卡| 青青青免费国产在线视频小草| 亚洲一区在线视频| 国产男女猛烈无遮挡免费视频 | 又粗又长又爽又长黄免费视频| 嫩草在线视频www免费观看| 亚洲精品乱码久久久久66| 特级无码毛片免费视频尤物| 亚洲成人福利网站| 韩国欧洲一级毛片免费| 高清免费久久午夜精品| 亚洲精品亚洲人成人网| 久草视频在线免费| 亚洲a∨国产av综合av下载| 中文亚洲成a人片在线观看| 一级毛片免费观看| 在线aⅴ亚洲中文字幕| jlzzjlzz亚洲乱熟在线播放| 久久久久久久久久国产精品免费| 亚洲乱码中文字幕小综合| 国产精品另类激情久久久免费| 国内精品99亚洲免费高清| 久久亚洲sm情趣捆绑调教| 日本一道在线日本一道高清不卡免费| 一级一黄在线观看视频免费| 日韩亚洲Av人人夜夜澡人人爽 | 久久亚洲国产成人精品无码区| 最近2019免费中文字幕视频三|