<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;
     }
    }



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


    網站導航:
     
    主站蜘蛛池模板: 韩国免费三片在线视频| 亚洲精品无码专区2| 亚洲第一街区偷拍街拍| 国产美女精品视频免费观看| 一级毛片不卡免费看老司机| 妻子5免费完整高清电视| 亚洲情综合五月天| 中文字幕无码成人免费视频| 四虎永久在线精品免费一区二区| 亚洲第一极品精品无码久久| 毛片a级毛片免费观看品善网| 成在人线av无码免费高潮喷水| 亚洲中文字幕无码久久2020| 亚洲自偷自偷在线制服| 成人免费无码视频在线网站| 全黄大全大色全免费大片| 伊人久久亚洲综合影院首页| 亚洲AV无码乱码国产麻豆| 四只虎免费永久观看| 最近免费中文字幕mv电影| 国产精品极品美女自在线观看免费 | 成人黄网站片免费视频 | 久久精品国产亚洲AV蜜臀色欲| 久久精品国产亚洲一区二区三区| 成人免费a级毛片无码网站入口| 99免费在线视频| 黄网站色成年片大免费高清| 亚洲一级毛片中文字幕| 亚洲av综合av一区| 亚洲麻豆精品国偷自产在线91| 成人毛片视频免费网站观看| 精品无码AV无码免费专区| 国内精品免费久久影院| 精品国产_亚洲人成在线| 亚洲精品123区在线观看| 亚洲精品国产福利片| 亚洲精品自产拍在线观看动漫| 精品国产亚洲男女在线线电影| 国产男女性潮高清免费网站| 猫咪社区免费资源在线观看 | 成人电影在线免费观看|