/**
* 分页类
*
*/
public class Page<T> {
public static final int DEFAULT_PAGE_SIZE = 10;
/**
* 当前页的页码
*/
private int pageNo;
/**
* 每页几条记录
*/
private int pageSize;
/**
* 总记录数
*/
private int totalCount;
/**
* 总的页数
*/
private int pageCount;
/**
* 结果集
*/
private List<T> result;
/**
* 构造器
*
* @param totalCount
* @param pageSize
*/
public Page(int pageNo, int pageSize, int totalCount) {
setPageNo(pageNo);
setPageSize(pageSize);
setTotalCount(totalCount);
}
public Page(int pageNo, int pageSize) {
setPageNo(pageNo);
setPageSize(pageSize);
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
// 设置当前页
if (pageNo < 1) {
pageNo = 1;
}
this.pageNo = pageNo;
}
public void setTotalCount(int totalCount) {
if (totalCount >= 0) {
this.totalCount = totalCount;
} else {
totalCount = 0;
}
calculatePageCount();
}
/**
* 计算总的页数
*/
private void calculatePageCount() {
pageCount = totalCount / pageSize + (totalCount % pageSize == 0 ? 0 : 1);
}
/**
* 当前页有几笔记录
* @return
*/
public int getCurrentPageSize() {
if (totalCount == 0) {
return 0;
} else if (pageNo < pageCount) {
// 非末页
return pageSize;
} else {
// 末页
return (totalCount - (pageNo - 1) * pageSize);
}
}
/**
* 当前页开始记录号,从0开始算
* @return
*/
public int getFirstResult() {
return (pageNo - 1) * pageSize;
}
/**
* 当前页结束记录号
* @return
*/
public int getLastResult() {
return (pageNo - 1) * pageSize + getCurrentPageSize() - 1;
}
/**
* 是否有下一页
*/
public boolean isHasNextPage() {
return (pageNo == pageCount) ? false : true;
}
/**
* 是否有上一页
*/
public boolean isHasPrevPage() {
return (pageNo == 1) ? false : true;
}
/**
* 是否是第一页
*/
public boolean isFirstPage() {
return (pageNo == 1) ? true : false;
}
/**
* 是否是最后一页
*/
public boolean isLastPage() {
return (pageNo == pageCount) ? true : false;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = (pageSize <= 0) ? DEFAULT_PAGE_SIZE : pageSize;
}
/**
* 前一页的页码
*/
public int getPrevPageNo() {
return isHasPrevPage() ? (pageNo - 1) : pageNo;
}
/**
* 后一页页码
*/
public int getNextPageNo() {
return isHasNextPage() ? (pageNo + 1) : pageNo;
}
public int getPageCount() {
return pageCount;
}
public int getTotalCount() {
return totalCount;
}
public boolean isEmpty() {
return totalCount == 0;
}
public List<T> getResult() {
return result;
}
public void setResult(List<T> result) {
this.result = result;
}