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

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

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

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825681
    • 排名 - 49

    最新評論

    閱讀排行榜

    評論排行榜

    這里用的是Oracle數據庫,使用偽列ROWNUM來實現分頁。分頁代碼如下:
      
      package com.deity.ranking.util;
            import java.util.List;
      import org.springframework.jdbc.core.JdbcTemplate;
      import org.springframework.jdbc.core.support.JdbcDaoSupport;
      /** * 分頁函數 * 
            * @author allenpan */
    public class Pagination extends JdbcDaoSupport{
      public static final int NUMBERS_PER_PAGE = 10;
      //一頁顯示的記錄數
      private int numPerPage;
      //記錄總數
      private int totalRows;
      //總頁數
      private int totalPages;
      //當前頁碼
      private int currentPage;
      //起始行數
      private int startIndex;
      //結束行數
      private int lastIndex;
      //結果集存放List
      private List resultList;
      //JdbcTemplate jTemplate
      private JdbcTemplate jTemplate;
      /**
      * 每頁顯示10條記錄的構造函數,使用該函數必須先給Pagination設置currentPage,jTemplate初值
      * @param sql oracle語句
      */
      public Pagination(String sql){
      if(jTemplate == null){
      throw new IllegalArgumentException("com.deity.ranking.util.Pagination.jTemplate is null,please initial it first. ");
      }else if(sql.equals("")){
      throw new IllegalArgumentException("com.deity.ranking.util.Pagination.sql is empty,please initial it first. ");
      }
      new Pagination(sql,currentPage,NUMBERS_PER_PAGE,jTemplate);
      }
      /**分頁構造函數
      * @param sql 根據傳入的sql語句得到一些基本分頁信息
      * @param currentPage 當前頁
      * @param numPerPage 每頁記錄數
      * @param jTemplate JdbcTemplate實例
      */
      public Pagination(String sql,int currentPage,int numPerPage,JdbcTemplate jTemplate){
      if(jTemplate == null){
      throw new IllegalArgumentException("com.deity.ranking.util.Pagination.jTemplate is null,please initial it first. ");
      }else if(sql == null || sql.equals("")){
      throw new IllegalArgumentException("com.deity.ranking.util.Pagination.sql is empty,please initial it first. ");
      }
      //設置每頁顯示記錄數
      setNumPerPage(numPerPage);
      //設置要顯示的頁數
      setCurrentPage(currentPage);
      //計算總記錄數
      StringBuffer totalSQL = new StringBuffer(" SELECT count(*) FROM ( ");
      totalSQL.append(sql);
      totalSQL.append(" ) totalTable ");
      //給JdbcTemplate賦值
      setJdbcTemplate(jTemplate);
      //總記錄數
      setTotalRows(getJdbcTemplate().queryForInt(totalSQL.toString()));
      //計算總頁數
      setTotalPages();
      //計算起始行數
      setStartIndex();
      //計算結束行數
      setLastIndex();
      System.out.println("lastIndex="+lastIndex);//////////////////
      //構造oracle數據庫的分頁語句
      StringBuffer paginationSQL = new StringBuffer(" SELECT * FROM ( ");
      paginationSQL.append(" SELECT temp.* ,ROWNUM num FROM ( ");
      paginationSQL.append(sql);
      paginationSQL.append(" ) temp where ROWNUM <= " + lastIndex);
      paginationSQL.append(" ) WHERE num > " + startIndex);
      //裝入結果集
      setResultList(getJdbcTemplate().queryForList(paginationSQL.toString()));
      }
      /**
      * @param args
      */
      public static void main(String[] args) {
      // TODO Auto-generated method stub    }
      public int getCurrentPage() {
      return currentPage;
      }
      public void setCurrentPage(int currentPage) {
      this.currentPage = currentPage;
      }
      public int getNumPerPage() {
      return numPerPage;
      }
      public void setNumPerPage(int numPerPage) {
      this.numPerPage = numPerPage;
      }
      public List getResultList() {
      return resultList;    }
      public void setResultList(List resultList) {
      this.resultList = resultList;
      }
      public int getTotalPages() {
      return totalPages;
      }
      //計算總頁數
      public void setTotalPages() {
      if(totalRows % numPerPage == 0){
      this.totalPages = totalRows / numPerPage;
      }else{
      this.totalPages = (totalRows / numPerPage) + 1;
      }
      }
      public int getTotalRows() {
      return totalRows;
      }
      public void setTotalRows(int totalRows) {
      this.totalRows = totalRows;
      }
      public int getStartIndex() {
      return startIndex;
      }
      public void setStartIndex() {
      this.startIndex = (currentPage - 1) * numPerPage;
      }
      public int getLastIndex() {
      return lastIndex;
      }
      public JdbcTemplate getJTemplate() {
      return jTemplate;
      }
      public void setJTemplate(JdbcTemplate template) {
      jTemplate = template;
      }
      //計算結束時候的索引
      public void setLastIndex() {
      System.out.println("totalRows="+totalRows);///////////
      System.out.println("numPerPage="+numPerPage);///////////
      if( totalRows < numPerPage){
      this.lastIndex = totalRows;
      }else if((totalRows % numPerPage == 0) || (totalRows % numPerPage != 0 && currentPage < totalPages)){
      this.lastIndex = currentPage * numPerPage;
      }else if(totalRows % numPerPage != 0 && currentPage == totalPages){//最后一頁
      this.lastIndex = totalRows ;
      }
      }}在我的業務邏輯代碼中:
      /**
      * find season ranking list from DC
      * @param areaId 選手區域id
      * @param rankDate 賽季
      * @param category 類別
      * @param characterName 角色名
      * @return List
      */
      public List findSeasonRankingList(Long areaId, int rankYear,int rankMonth,
      Long categoryId,String characterName) {
      //SQL語句
      StringBuffer sql = new StringBuffer(" SELECT C.USERID userid,D.POSNAME posname,C.GAMEID gameid,C.AMOUNT amount,C.RANK rank FROM ");
      //表            sql.append(" (SELECT B.USERID USERID,");
      sql.append(" B.POSID POSID,");
      sql.append(" A.DISTRICT_CODE DISTRICTCODE,");
      sql.append(" A.GAMEID GAMEID,");
      sql.append(" AMOUNT AMOUNT,");
      sql.append(" RANK RANK ");
      sql.append(" FROM TB_FS_RANK A ");
      sql.append(" LEFT JOIN TB_CHARACTER_INFO B ");
      sql.append(" ON A.DISTRICT_CODE = B.DISTRICT_CODE ");
      sql.append(" AND A.GAMEID = B.GAMEID ");
      //附加條件
      if(areaId != null && areaId.intValue() != 0){
      sql.append(" and A.DISTRICT_CODE = " + areaId.intValue());
      }
      if( rankYear > 1970 && rankMonth > 0){
      //hql.append(" and sas.id.dt >= to_date('" + rankYear + "-" + rankMonth + "-01 00:00:00'," + "YYYY-MM-DD HH24:MI:SS");
      //hql.append(" and sas.id.dt <= to_date('" + rankYear + "-" + rankMonth + "-" + TimeTool.findMaxDateInMonth(rankYear,rankMonth) + " 23:59:59'," + "YYYY-MM-DD HH24:MI:SS");
      sql.append(" and A.DT = fn_time_convert(to_date('" + rankYear + "-" + rankMonth + "'," + "'YYYY-MM')) ");
      }
      if(categoryId != null && categoryId.intValue() != 0){
      sql.append(" and A.CID = " + categoryId.intValue());
      }
      if(characterName != null && !characterName.trim().equals("")){
      sql.append(" and A.GAMEID = '" + characterName.trim()+"' ");
      }
      sql.append(" ORDER BY RANK ASC) C ");
      sql.append(" LEFT JOIN TB_FS_POSITION D ");
      sql.append(" ON C.POSID = D.POSID ");
      sql.append(" ORDER BY C.RANK ");
      System.out.println("hql="+sql.toString());////////////////
      //使用自己的分頁程序控制結果集
      Pagination pageInfo = new Pagination(sql.toString(),1,10,getJdbcTemplate());
      return pageInfo.getResultList();
      //return getJdbcTemplate().queryForList(sql.toString());
      }
    文章來源:http://java.chinaitlab.com/Spring/38091.html

    posted on 2008-04-20 19:32 Ke 閱讀(5021) 評論(0)  編輯  收藏 所屬分類: springjdbcpagination
    主站蜘蛛池模板: 亚洲国产老鸭窝一区二区三区| 国产亚洲精品资在线| 亚洲精品在线视频观看| 野花香在线视频免费观看大全| 国产亚洲av片在线观看18女人| 视频免费1区二区三区| 免费二级毛片免费完整视频| 亚洲AV无码一区二区一二区| 成人免费午夜视频| 综合偷自拍亚洲乱中文字幕| 免费va人成视频网站全| 国产成人无码免费看片软件 | 亚洲乱码国产乱码精华| 女人18毛片免费观看| 国产精品亚洲专一区二区三区| 国产禁女女网站免费看| 全部在线播放免费毛片| 亚洲午夜久久久影院| 桃子视频在线观看高清免费视频| 亚洲黄色三级网站| 一二三四在线播放免费观看中文版视频| 亚洲综合色丁香婷婷六月图片 | 亚洲精品无码久久久久| 亚欧日韩毛片在线看免费网站| 亚洲成人午夜电影| 德国女人一级毛片免费| 日日狠狠久久偷偷色综合免费| 久久精品国产亚洲av麻豆| 69成人免费视频| 青草青草视频2免费观看| 亚洲一区二区三区香蕉| 猫咪免费人成网站在线观看| 一本色道久久综合亚洲精品蜜桃冫 | 亚洲成人动漫在线观看| 国产免费观看网站| 国内永久免费crm系统z在线| 亚洲第一成人在线| 伊人亚洲综合青草青草久热| 免费A级毛片在线播放| 亚洲av成人一区二区三区在线播放| 亚洲综合亚洲综合网成人|