package cn.ksource.core.util;
|
|
import java.io.Serializable;
|
import java.util.List;
|
|
@SuppressWarnings("serial")
|
public class PageBeanUtil<T> implements Serializable
|
{
|
private List<T> list; //要返回的某一页的记录列表
|
|
private long allRow; //总记录数
|
private int totalPage; //总页数
|
private int currentPage; //当前页
|
private int pageSize; //每页记录数
|
private int stratPage; //滚动条开始页码
|
private int endPage; //滚动条结束页码
|
private final int pageList=10; //滚动条长度
|
|
private boolean isFirstPage; //是否为第一页
|
private boolean isLastPage; //是否为最后一页
|
private boolean hasPreviousPage; //是否有前一页
|
private boolean hasNextPage; //是否有下一页
|
|
|
public List<T> getList() {
|
return list;
|
}
|
public void setList(List<T> list) {
|
this.list = list;
|
}
|
public long getAllRow() {
|
return allRow;
|
}
|
public void setAllRow(long allRow) {
|
this.allRow = allRow;
|
}
|
public int getTotalPage() {
|
return totalPage;
|
}
|
public void setTotalPage(int totalPage) {
|
this.totalPage = totalPage;
|
}
|
public int getCurrentPage() {
|
return currentPage;
|
}
|
public void setCurrentPage(int currentPage) {
|
this.currentPage = currentPage;
|
}
|
public int getPageSize() {
|
return pageSize;
|
}
|
public void setPageSize(int pageSize) {
|
this.pageSize = pageSize;
|
}
|
|
/**
|
* 初始化分页信息
|
*/
|
public void init(){
|
this.isFirstPage = isFirstPage();
|
this.isLastPage = isLastPage();
|
this.hasPreviousPage = isHasPreviousPage();
|
this.hasNextPage = isHasNextPage();
|
}
|
|
/**
|
* 以下判断页的信息,只需getter方法(is方法)即可
|
* @return
|
*/
|
|
public boolean isFirstPage() {
|
return currentPage == 1; // 如是当前页是第1页
|
}
|
public boolean isLastPage() {
|
return currentPage == totalPage; //如果当前页是最后一页
|
}
|
public boolean isHasPreviousPage() {
|
return currentPage != 1; //只要当前页不是第1页
|
}
|
public boolean isHasNextPage() {
|
return currentPage != totalPage; //只要当前页不是最后1页
|
}
|
|
|
/**
|
* 计算总页数,静态方法,供外部直接通过类名调用
|
* @param pageSize 每页记录数
|
* @param allRow 总记录数
|
* @return 总页数
|
*/
|
public static int countTotalPage(final int pageSize,final long allRow){
|
int totalPage = (int) (allRow % pageSize == 0 ? allRow/pageSize : allRow/pageSize+1);
|
return totalPage;
|
}
|
|
/**
|
* 计算当前页开始记录
|
* @param pageSize 每页记录数
|
* @param currentPage 当前第几页
|
* @return 当前页开始记录号
|
*/
|
public static int countOffset(final int pageSize,final int currentPage){
|
final int offset = pageSize*(currentPage-1);
|
return offset;
|
}
|
|
/**
|
* 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替
|
* @param page 传入的参数(可能为空,即0,则返回1)
|
* @return 当前页
|
*/
|
public static int countCurrentPage(int page){
|
final int curPage = (page==0?1:page);
|
return curPage;
|
}
|
|
public int getStratPage() {
|
|
if(this.currentPage>this.pageList/2){
|
if((totalPage-currentPage)<5&&totalPage>10){
|
return this.stratPage=totalPage-9;
|
}
|
return this.stratPage=this.currentPage-4;
|
}
|
else
|
{
|
return this.stratPage = 1;
|
}
|
}
|
public int getEndPage() {
|
if(this.totalPage<this.pageList){
|
return this.endPage=this.totalPage;
|
}
|
else{
|
if((totalPage-currentPage)<5){
|
return this.endPage=totalPage;
|
}
|
return this.endPage = this.stratPage+9;
|
}
|
}
|
}
|