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

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

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

    七郎's JavaBlog

    草木竹石皆可為劒。至人之用人若鏡,不將不迎,應而不藏,故能勝物而不傷。
    posts - 60, comments - 14, trackbacks - 0, articles - 0

    JdbcTemplate擴展分頁

    Posted on 2008-06-20 12:44 七郎歸來 閱讀(1119) 評論(0)  編輯  收藏

    1.JdbcTemplateExtend .java
    package rms.pub.main.web.test;

    import java.util.List;
    import java.util.Map;
    import javax.sql.*;
    import org.springframework.dao.DataAccessException;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;

    public class JdbcTemplateExtend extends JdbcTemplate {
     private DataSource dataSource;

     /**
      * 默認構造器,調用此方法初始化,需要調用setDataSource設置數據源
      */
     public JdbcTemplateExtend() {
     }

     /**
      * 初始構造器
      *
      * @param dataSource
      *            數據源
      */
     public JdbcTemplateExtend(DataSource dataSource) {
      this.dataSource = dataSource;
      super.setDataSource(dataSource);
     }

     /**
      * 普通分頁查詢<br>
      * <b>如果結果結合比較大應該調用setFetchsize() 和setMaxRow兩個方法來控制一下,否則會內存溢出</b>
      *
      * @see #setFetchSize(int)
      * @see #setMaxRows(int)
      * @param sql
      *            查詢的sql語句
      * @param startRow
      *            起始行
      * @param rowsCount
      *            獲取的行數
      * @return
      * @throws DataAccessException
      */
     @SuppressWarnings("unchecked")
     public List<Map> queryForListPage(String sql, int startRow, int rowsCount)
       throws DataAccessException {
      return queryForListPage(sql, startRow, rowsCount,
        getColumnMapRowMapper());
     }

     /**
      * 自定義行包裝器查詢<br>
      * <b>如果結果結合比較大應該調用setFetchsize() 和setMaxRow兩個方法來控制一下,否則會內存溢出</b>
      *
      * @see #setFetchSize(int)
      * @see #setMaxRows(int)
      * @param sql
      *            查詢的sql語句
      * @param startRow
      *            起始行
      * @param rowsCount
      *            獲取的行數
      * @param rowMapper
      *            行包裝器
      * @return
      * @throws DataAccessException
      */
     @SuppressWarnings("unchecked")
     public List<Map> queryForListPage(String sql, int startRow, int rowsCount,
       RowMapper rowMapper) throws DataAccessException {
      return (List) query(sql, new SplitPageResultSetExtractor(rowMapper,
        startRow, rowsCount));
     }

     public DataSource getDataSource() {
      return dataSource;
     }

     public void setDataSource(DataSource dataSource) {
      this.dataSource = dataSource;
      super.setDataSource(dataSource);
     }
    }


    2. SplitPageResultSetExtractor .java

    package rms.pub.main.web.test;

    import java.sql.*;
    import java.util.*;
    import org.springframework.dao.DataAccessException;
    import org.springframework.jdbc.core.ResultSetExtractor;
    import org.springframework.jdbc.core.RowMapper;
    import org.springframework.util.Assert;

    public class SplitPageResultSetExtractor implements ResultSetExtractor {
     private final int start;// 起始行號
     private final int len;// 結果集合的長度
     private final RowMapper rowMapper;// 行包裝器

     public SplitPageResultSetExtractor(RowMapper rowMapper, int start, int len) {
      Assert.notNull(rowMapper, "RowMapper is required");
      this.rowMapper = rowMapper;
      this.start = start;
      this.len = len;
     }

     /**
      * 處理結果集合,被接口自動調用,該類外邊不應該調用
      */
     public Object extractData(ResultSet rs) throws SQLException,
       DataAccessException {
      List result = new ArrayList();
      int rowNum = 0;
      int end = start + len;
      point: while (rs.next()) {
       ++rowNum;
       if (rowNum < start) {
        continue point;
       } else if (rowNum >= end) {
        break point;
       } else {
        result.add(this.rowMapper.mapRow(rs, rowNum));
       }
      }
      return result;
     }
    }



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


    網站導航:
     
    主站蜘蛛池模板: 亚洲专区在线视频| 久久国产成人精品国产成人亚洲| 亚洲av丰满熟妇在线播放| 国产美女视频免费观看的网站| 亚洲精品久久久www| 精品国产污污免费网站入口在线| 国产91精品一区二区麻豆亚洲| 黄 色一级 成 人网站免费| 亚洲自偷自偷图片| 嫩草成人永久免费观看| 亚洲三级电影网址| 成人免费观看一区二区| 亚洲欧美第一成人网站7777| 四虎永久免费影院在线| 一个人免费观看www视频| 在线a亚洲v天堂网2019无码| 毛片在线播放免费观看| 亚洲欧洲国产综合| 成年人免费观看视频网站| 特级一级毛片免费看| 亚洲成AV人片天堂网无码| 国产91色综合久久免费分享| 99999久久久久久亚洲| 俄罗斯极品美女毛片免费播放| 国产精品免费久久久久影院 | 57pao国产成视频免费播放| 亚洲精品视频在线播放| 全免费A级毛片免费看网站| jzzjzz免费观看大片免费| 亚洲国产精品人久久| 免费涩涩在线视频网| 久草免费福利在线| 亚洲欧洲精品久久| 又大又粗又爽a级毛片免费看| 99在线热播精品免费99热| 亚洲乱码在线观看| 国产成人综合亚洲AV第一页| 在线观看永久免费| 丁香六月婷婷精品免费观看| 91亚洲va在线天线va天堂va国产| 国产无遮挡裸体免费视频|