分页page工具类

package com.changgou.util;

import java.io.Serializable;
import java.util.List;

/**

  • 分页对象

  • @param
    */
    public class Page implements Serializable{

    //当前默认为第一页
    public static final Integer pageNum = 1;
    //默认每页显示条件
    public static final Integer pageSize = 20;

    //判断当前页是否为空或是小于1
    public static Integer cpn(Integer pageNum){
    if(null == pageNum || pageNum < 1){
    pageNum = 1;
    }
    return pageNum;
    }

    // 页数(第几页)
    private long currentpage;

    // 查询数据库里面对应的数据有多少条
    private long total;// 从数据库查处的总记录数

    // 每页显示多少分页标签
    private int size;

    // 下页
    private int next;

    private List list;

    // 最后一页
    private int last;

    private int lpage;

    private int rpage;

    //从哪条开始查
    private long start;

    //全局偏移量
    public int offsize = 2;

    public Page() {
    super();
    }

    /****

    • @param currentpage 当前页

    • @param total 总记录数

    • @param pagesize 每页显示多少条
      */
      public void setCurrentpage(long currentpage,long total,long pagesize) {
      int totalPages=0;
      if (total0&&pagesize0){
      //总记录数总页数等0
      totalPages=0;
      }else {
      //如果整除表示正好分N页,如果不能整除在N页的基础上+1页
      totalPages = (int) (total % pagesize == 0 ? total / pagesize : (total / pagesize) + 1);
      }
      //总页数
      this.last = totalPages;

      //判断当前页是否越界,如果越界,我们就查最后一页
      if(currentpage>totalPages){
      this.currentpage = totalPages;
      }else{
      this.currentpage=currentpage;
      }

      //计算起始页
      this.start = (this.currentpage-1)*pagesize;
      }

/****
* 初始化分页
* @param total
* @param currentpage
* @param pagesize
*/
public void initPage(long total,int currentpage,int pagesize){
//总记录数
this.total = total;
//每页显示多少条
this.size=pagesize;

	//计算当前页和数据库查询起始值以及总页数
	setCurrentpage(currentpage, total, pagesize);

	//分页计算
	int leftcount =this.offsize,	//需要向上一页执行多少次
			rightcount =this.offsize;

	//起点页
	this.lpage =currentpage;
	//结束页
	this.rpage =currentpage;

	//2点判断
	this.lpage = currentpage-leftcount;			//正常情况下的起点
	this.rpage = currentpage+rightcount;		//正常情况下的终点

	//页差=总页数和结束页的差
	int topdiv = this.last-rpage;				//判断是否大于最大页数

	/***
	 * 起点页
	 * 1、页差<0  起点页=起点页+页差值
	 * 2、页差>=0 起点和终点判断
	 */
	this.lpage=topdiv<0? this.lpage+topdiv:this.lpage;

	/***
	 * 结束页
	 * 1、起点页<=0   结束页=|起点页|+1
	 * 2、起点页>0    结束页
	 */
	this.rpage=this.lpage<=0? this.rpage+(this.lpage*-1)+1: this.rpage;

	/***
	 * 当起点页<=0  让起点页为第一页
	 * 否则不管
	 */
	this.lpage=this.lpage<=0? 1:this.lpage;

	/***
	 * 如果结束页>总页数   结束页=总页数
	 * 否则不管
	 */
	this.rpage=this.rpage>last? this.last:this.rpage;
}

/****
*
* @param total 总记录数
* @param currentpage 当前页
* @param pagesize 每页显示多少条
*/
public Page(long total,int currentpage,int pagesize) {
initPage(total,currentpage,pagesize);
}

//上一页
public long getUpper() {
	return currentpage>1? currentpage-1: currentpage;
}

//总共有多少页,即末页
public void setLast(int last) {
	this.last = (int) (total%size==0? total/size : (total/size)+1);
}

/****
 * 带有偏移量设置的分页
 * @param total
 * @param currentpage
 * @param pagesize
 * @param offsize
 */
public Page(long total,int currentpage,int pagesize,int offsize) {
	this.offsize = offsize;
	initPage(total, currentpage, pagesize);
}

public long getNext() {
	return  currentpage<last? currentpage+1: last;
}

public void setNext(int next) {
	this.next = next;
}

public long getCurrentpage() {
	return currentpage;
}

public long getTotal() {
	return total;
}

public void setTotal(long total) {
	this.total = total;
}

public long getSize() {
	return size;
}

public void setSize(int size) {
	this.size = size;
}

public long getLast() {
	return last;
}

public long getLpage() {
	return lpage;
}

public void setLpage(int lpage) {
	this.lpage = lpage;
}

public long getRpage() {
	return rpage;
}

public void setRpage(int rpage) {
	this.rpage = rpage;
}

public long getStart() {
	return start;
}

public void setStart(long start) {
	this.start = start;
}

public void setCurrentpage(long currentpage) {
	this.currentpage = currentpage;
}

/**
 * @return the list
 */
public List<T> getList() {
	return list;
}

/**
 * @param list the list to set
 */
public void setList(List<T> list) {
	this.list = list;
}

public static void main(String[] args) {
		//总记录数
		//当前页
		//每页显示多少条
		int cpage =17;
		Page page = new Page(1001,cpage,50,7);
		System.out.println("开始页:"+page.getLpage()+"__当前页:"+page.getCurrentpage()+"__结束页"+page.getRpage()+"____总页数:"+page.getLast());
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值