mysql limit 服务端分页
一个简单好用的mysql 分页Java类分页类package com.cy.driver.common.mybatis.pager;
import com.cy.driver.common.constants.Constants;
/**
* 类描述: mysql分页 适用于服务端
* 提供两个构造函数
* 1.默认分页大小
* 2.自定义分页大小
*
* 作者 yanst 创建时间: 2015-5-7 下午7:54:49
*/
public class HelpPage {
private long limitOneValue;//limit 第一个参数的值-1 说明传过来的数据不合法;
private long totalPages;//总页数
private long currentPage;//当前页
privatelong countNumbers;//总条数
private int pageSize=Constants.PAGE_SIZE;//分页大小
public HelpPage(long currentPage,
long countNumbers, int pageSize) {
this.pageSize = pageSize;
this.countNumbers = countNumbers;
this.currentPage = currentPage;
this.totalPages = getTatalPages(countNumbers, pageSize);
this.limitOneValue = getLimitOneValue(currentPage, countNumbers, totalPages,pageSize);
}
public HelpPage(long currentPage,
long countNumbers) {
this.pageSize = getPageSize();
this.countNumbers = countNumbers;
this.currentPage = currentPage;
this.totalPages = getTatalPages(countNumbers, pageSize);
this.limitOneValue = getLimitOneValue(currentPage, countNumbers, totalPages,pageSize);
}
/**
* 获取总页数 (页数从0 开始)
*
* @param orderCounts
* 总条数
* @return 总页数
*/
private long getTatalPages(long countNumbers,int pageSize) {
long totalPages = 0;
if (countNumbers <= pageSize) {
totalPages = 0;
}
if (countNumbers % pageSize == 0) {// 页数刚好是条数的总倍数
totalPages = (countNumbers / pageSize) - 1;
} else {
totalPages = (countNumbers / pageSize);// 页数不是总条数的倍数
}
return totalPages;
}
/**
* mysql limit ?,? 获取一个问号的值
* @param currentPage当前页
* @param countNumbers总条数
* @param tatalPages总页数
*
*/
private long getLimitOneValue(long currentPage, long countNumbers,
long totalPages,int pageSize) {
if (!isParameterLegitimacy(currentPage, countNumbers, pageSize)) {// 总页数小于 0 当前也超过总页数 当前页小于 0
return -1;//不合法的分页参数校验
}
if (totalPages == 0) {// 如果就一页那么则 limit 第一个参数则为0;
return 0;
}
long limtiStartNum = 0;
if (currentPage <= totalPages) {
limtiStartNum = (currentPage) * pageSize;
}
return limtiStartNum;
}
/**
* 判断用户传过来的值是否合法
* @param currentPage当前页
* @param countNumbers总条数
* @param pageSize 页数大小
*
*/
public boolean isParameterLegitimacy(long currentPage, long countNumbers,int pageSize) {
long totalPages = getTatalPages(countNumbers, pageSize);
if (totalPages < 0 || currentPage > totalPages || currentPage < 0) {// 总页数小于 0 当前页超过总页数 当前页小于 0
return false;// 不合法的分页参数校验
}
return true;
}
public long getLimitOneValue() {
return limitOneValue;
}
public void setLimitOneValue(long limitOneValue) {
this.limitOneValue = limitOneValue;
}
public long getTotalPages() {
return totalPages;
}
public void setTotalPages(long totalPages) {
this.totalPages = totalPages;
}
public long getCurrentPage() {
return currentPage;
}
public void setCurrentPage(long currentPage) {
this.currentPage = currentPage;
}
public long getCountNumbers() {
return countNumbers;
}
public void setCountNumbers(long countNumbers) {
this.countNumbers = countNumbers;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public static void main(String[] args) {
HelpPage hp = new HelpPage(11, 122,11);
System.out.println("总条数:"+hp.getCountNumbers());
System.out.println("当前页:"+hp.getCurrentPage());
System.out.println("limit第一个参数:"+hp.getLimitOneValue());
System.out.println("页数大小:"+hp.getPageSize());
System.out.println("总页数:"+hp.getTotalPages());
}
}
页:
[1]