实现分页查询的关键是获得所有符合条件的记录总数,这样就能根据每页的数量计算出页数,
为此设计一个 Page 对象,初始化每页需要显示的记录数和要显示的页号
public class Page
{
public static final int DEFAULT_PAGESIZE = 10;
private int pageSize;
private int pageIndex;
private int totalCount;
private int pageCount;
public Page(int pageSize,int pageIndex){
if(pageSize < 1)
pageSize = 1;
if(pageIndex < 1)
pageIndex = 1;
this.pageSize = pageSize;
this.pageIndex = pageIndex;
}
public Page{int DUFAULT_PAGESIZE}{ this(pageIndex,DEFAULT_PAGESIZE);}
public int getPageIndex(){return pageIndex;}
public int getPageCount(){return pageCount;}
public int getTotalCount(){return totalCount;}
public int getPageSize{return pageSize;}
//如果是第一页,设置第一条记录序号为0
public int getFirstResult(){return (pageIndex-1)*pageSize; }
public boolean getHasPrevious(){return pageIndex>1; }
public boolean getHasNext(){return pageIndex<pageCount; }
public boolean isEmpty(){return totalCount == 0;}
public void setTotalCount(int totalCount){
this.totalCount = totalCount;
pageCount = totalCount / pageSize + (totalCount%pageSize==0 ? 0 :1);
if(totalCount == 0)
{
if(pageIndex!=1)
throw new IndexOutOfBoundsException("Page index out of rangs.");
}
else{
if(pageIndex>pageCount)
throw new IndexOutOfBoundsException("Page index out of range.");
}
}
}