免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1963 | 回复: 0
打印 上一主题 下一主题

mysql limit 服务端分页 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-10 15:39 |只看该作者 |倒序浏览
一个简单好用的mysql 分页Java类
分页类
  1. package com.cy.driver.common.mybatis.pager;

  2. import com.cy.driver.common.constants.Constants;

  3. /**
  4. * 类描述: mysql分页 适用于服务端
  5. * 提供两个构造函数  
  6. *      1.默认分页大小
  7. *      2.自定义分页大小
  8. *
  9. * 作者 yanst 创建时间: 2015-5-7 下午7:54:49
  10. */
  11. public class HelpPage {
  12.      
  13.     private long limitOneValue;//limit 第一个参数的值  -1 说明传过来的数据不合法;
  14.      
  15.     private long totalPages;//总页数

  16.     private long currentPage;//当前页
  17.      
  18.     private  long countNumbers;//总条数
  19.      
  20.     private int pageSize=Constants.PAGE_SIZE;//分页大小
  21.      
  22.     public HelpPage(long currentPage,
  23.             long countNumbers, int pageSize) {
  24.         this.pageSize = pageSize;
  25.         this.countNumbers = countNumbers;
  26.         this.currentPage = currentPage;
  27.         this.totalPages = getTatalPages(countNumbers, pageSize);
  28.         this.limitOneValue = getLimitOneValue(currentPage, countNumbers, totalPages,pageSize);
  29.     }
  30.     public HelpPage(long currentPage,
  31.             long countNumbers) {
  32.         this.pageSize = getPageSize();
  33.         this.countNumbers = countNumbers;
  34.         this.currentPage = currentPage;
  35.         this.totalPages = getTatalPages(countNumbers, pageSize);
  36.         this.limitOneValue = getLimitOneValue(currentPage, countNumbers, totalPages,pageSize);
  37.     }
  38.      
  39.     /**
  40.      * 获取总页数 (页数从0 开始)
  41.      *
  42.      * @param orderCounts
  43.      *            总条数
  44.      * @return 总页数
  45.      */
  46.     private long getTatalPages(long countNumbers,int pageSize) {
  47.         long totalPages = 0;
  48.         if (countNumbers <= pageSize) {
  49.             totalPages = 0;
  50.         }
  51.         if (countNumbers % pageSize == 0) {// 页数刚好是条数的总倍数
  52.             totalPages = (countNumbers / pageSize) - 1;
  53.         } else {
  54.             totalPages = (countNumbers / pageSize);// 页数不是总条数的倍数
  55.         }
  56.         return totalPages;
  57.     }

  58.     /**
  59.      * mysql limit ?,? 获取一个问号的值
  60.      * @param currentPage  当前页
  61.      * @param countNumbers总条数
  62.      * @param tatalPages总页数
  63.      *
  64.      */
  65.     private long getLimitOneValue(long currentPage, long countNumbers,
  66.             long totalPages,int pageSize) {
  67.          
  68.         if (!isParameterLegitimacy(currentPage, countNumbers, pageSize)) {// 总页数小于 0 当前也超过总页数 当前页小于 0
  69.             return -1;//不合法的分页参数校验
  70.         }
  71.         if (totalPages == 0) {// 如果就一页那么则 limit 第一个参数则为0;
  72.             return 0;
  73.         }
  74.         long limtiStartNum = 0;
  75.         if (currentPage <= totalPages) {
  76.             limtiStartNum = (currentPage) * pageSize;
  77.         }
  78.         return limtiStartNum;
  79.     }
  80.      
  81.     /**
  82.      * 判断用户传过来的值是否合法
  83.      * @param currentPage  当前页
  84.      * @param countNumbers总条数
  85.      * @param pageSize 页数大小
  86.      *
  87.      */
  88.     public boolean isParameterLegitimacy(long currentPage, long countNumbers,int pageSize) {
  89.         long totalPages = getTatalPages(countNumbers, pageSize);
  90.         if (totalPages < 0 || currentPage > totalPages || currentPage < 0) {// 总页数小于 0 当前页超过总页数 当前页小于 0
  91.             return false;// 不合法的分页参数校验
  92.         }
  93.         return true;
  94.     }
  95.      
  96.     public long getLimitOneValue() {
  97.         return limitOneValue;
  98.     }

  99.     public void setLimitOneValue(long limitOneValue) {
  100.         this.limitOneValue = limitOneValue;
  101.     }

  102.     public long getTotalPages() {
  103.         return totalPages;
  104.     }

  105.     public void setTotalPages(long totalPages) {
  106.         this.totalPages = totalPages;
  107.     }

  108.     public long getCurrentPage() {
  109.         return currentPage;
  110.     }

  111.     public void setCurrentPage(long currentPage) {
  112.         this.currentPage = currentPage;
  113.     }

  114.     public long getCountNumbers() {
  115.         return countNumbers;
  116.     }

  117.     public void setCountNumbers(long countNumbers) {
  118.         this.countNumbers = countNumbers;
  119.     }

  120.     public int getPageSize() {
  121.         return pageSize;
  122.     }

  123.     public void setPageSize(int pageSize) {
  124.         this.pageSize = pageSize;
  125.     }
  126.      
  127.     public static void main(String[] args) {
  128.         HelpPage hp = new HelpPage(11, 122,11);
  129.         System.out.println("总条数:"+hp.getCountNumbers());
  130.         System.out.println("当前页:"+hp.getCurrentPage());
  131.         System.out.println("limit第一个参数:"+hp.getLimitOneValue());
  132.         System.out.println("页数大小:"+hp.getPageSize());
  133.         System.out.println("总页数:"+hp.getTotalPages());
  134.          
  135.     }
  136. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP