强大的 java 分页器

花了几个小时写的一个强大的分页器

package cn.soft.util;

/**
 *类描述:分页器
 *
 *说明:pagination 为开头的变量指的是 翻页时用的按钮的页码  
 *
 *
 *@author: 刘夏楠
 *@date: 日期:2014-5-7 时间:下午10:26:21
 *@version 1.0
 */
public class PageSplitor {

	private int pageSize;//每页行数
	private int totalRows;//总行数
	private int  pagenum;//总页数
	
	private int page=1;//当前页
	
	private int first;//数据库查询起始位
	private int count;//数据库查询数量
	
	private int pre;//前一页
	private int next;//下一页
	
	private int paginationNum;//页码显示数量
	private int paginationBegain=0;//开始页码
	private int paginationEnd=0;//结束页码
	
	/**
	 * @param pageSize 每页行数
	 * @param totalRows 总行数
	 * @param paginationNum  页码显示数量
	 */
	public PageSplitor(int pageSize,int totalRows,int paginationNum)
	{
		this.pageSize=pageSize;
		this.totalRows=totalRows;
		this.paginationNum=paginationNum;
		
		//计算总页数
		 pagenum=(totalRows+pageSize-1)/pageSize;  
		        if(pagenum<1)  
		            pagenum=1;  
		 setPage(1);
		
	}

	public void setPage(int page) {
			if(page<1)this.page=1;
			else if(page>pagenum)this.page=pagenum;
			else this.page=page;
			
			first=(page-1)*pageSize;//数据库起始位
			count=pageSize;//数据库count
			
			
			   pre=this.page-1;  
			   next=this.page+1;  
			 if(pre<1)pre=1;  
			 if(next>pagenum)next=pagenum;  
			 
			 
			 
			 int p1=paginationNum/2;
			 int p2=paginationNum-p1-1;
			 
			
		    if(pagenum<=paginationNum)//页数不足5
		    {				    	
		    	paginationBegain=1;
		    	paginationEnd=pagenum;
		    }
		    else//页数大于5
		     {				     	
		     	if(this.page>p1&&this.page<=pagenum-p2)
		     	{
		     		paginationBegain=this.page-p1;
		     		paginationEnd=this.page+p2;
		     	}
		     	else if(this.page<=p1)
		     	{
		     		paginationBegain=1;
		     		paginationEnd=paginationNum;
		     	
		     	}else if(this.page>pagenum-p2)
		     	{
		     		paginationBegain=pagenum-paginationNum+1;
		     		paginationEnd=pagenum;
		     	
		     	}
		     
		     }

			 
			 
			 


	}
	
	/**
	 * 得到当前页
	 * @return 
	 * int 
	 */
	public int getPage() {
		return page;
	}
	
	/**
	 * 得到每页行数
	 * @return
	 * int
	 */
	public int getPageSize() {
		return pageSize;
	}

	

	/**
	 * 得到总行数
	 * @return
	 * int
	 */
	public int getTotalRows() {
		return totalRows;
	}

	

	/**
	 * 得到总页数
	 * @return
	 * int
	 */
	public int getPagenum() {
		return pagenum;
	}

	/**
	 * 得到数据库起始位
	 * @return
	 * int
	 */
	public int getFirst() {
		return first;
	}

	/**
	 * 得到数据库查询长度
	 * @return
	 * int
	 */
	public int getCount() {
		return count;
	}

	/**
	 * 得到前一页页码
	 * @return
	 * int
	 */
	public int getPre() {
		return pre;
	}

	/**
	 * 得到后一页页码
	 * @return
	 * int
	 */
	public int getNext() {
		return next;
	}

	/**
	 * 得到页码显示数量
	 * @return
	 * int
	 */
	public int getPaginationNum() {
		return paginationNum;
	}

	/**
	 * 得到页码显示开始
	 * @return
	 * int
	 */
	public int getPaginationBegain() {
		return paginationBegain;
	}

	/**
	 * 得到页码显示结束
	 * @return
	 * int
	 */
	public int getPaginationEnd() {
		return paginationEnd;
	}

	
	

	@Override
	public String toString() {
		return "PageSplitor [count=" + count + ", first=" + first + ", next="
				+ next + ", page=" + page + ", pageSize=" + pageSize
				+ ", pagenum=" + pagenum + ", paginationBegain="
				+ paginationBegain + ", paginationEnd=" + paginationEnd
				+ ", paginationNum=" + paginationNum + ", pre=" + pre
				+ ", totalRows=" + totalRows + "]";
	}

	
	
	
	
}


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值