花了几个小时写的一个强大的分页器
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 + "]";
}
}