强大的 java 分页器

2014-11-23 21:55:44 · 作者: · 浏览: 9

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

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 + "]"; } }