public class Pager implements Serializable {
private static final long serialVersionUID = 2626338020642050199L;
/** 升序 */
public static final String ASC = "ASC";
/** 降序 */
public static final String DESC = "DESC";
/** 当前页码数,默认当前页为第一页*/
private int pageNo;
/** 总页数 */
private int totalPage;
/** 每页显示记录数,可选范围:1-100,不指定并且需要分页时默认为100. */
private int pageSize;
/** 总记录数 */
private int totalCount;
/** 当前页记录数 */
private int count;
/** 排序字段 */
private String sort;
/** 排序类型(升序asc/降序desc,默认为升序) */
private String sortType = ASC;
// jquery databale控件分页专用参数
/** 请求次数 */
private Integer draw;
/** 当前起始位置 */
private Integer start;
/** 页面显示记录数量 */
private Integer length;
/** search[value]: search输入框中的值,search[regex]搜索是否支持正则 */
private Map<String, String> search;
/** order[0][column]: 表示第几列需要排序,order[0][dir]: 排序方式ASC | DESC */
private List<Map<String, String>> order;
public Pager() {
setPageSize(100);
setPageNo(1);
}
/**
* 默认当前页为第一页
* @param pageSize 每页显示记录数
*/
public Pager(final int pageSize) {
setPageSize(pageSize);
setPageNo(1);
}
/**
* @param pageSize 每页显示记录数
* @param pageNo当前页码数
*/
public Pager(final int pageSize, final int pageNo) {
setPageSize(pageSize);
setPageNo(pageNo);
}
/**
* 获取当前页
* @return pageNo 当前页参数变量
*/
public int getPageNo() {
return pageNo;
}
/**
* 设置当前页
* @param pageNo 当前页参数变量
*/
public void setPageNo(final int pageNo) {
this.pageNo = pageNo;
if (pageNo < 1) {
this.pageNo = 1;
}
}
/**
* 获取每页显示记录数
* @return pageSize 每页显示记录数
*/
public int getPageSize() {
return pageSize;
}
/**
* 设置每页显示记录数,可选范围:1-100,不指定并且需要分页时默认为100。
* @param pageSize 每页显示记录数
*/
public void setPageSize(final int pageSize) {
this.pageSize = pageSize;
if (pageSize < 1) {
this.pageSize = 1;
}else if (pageSize>100) {
this.pageSize = 100;
}
}
/**
* 获取总记录数
* @return totalCount 总记录数
*/
public int getTotalCount() {
return totalCount;
}
/**
* 设置总记录数
* @param totalCount 总记录数
*/
public void setTotalCount(final int totalCount) {
this.totalCount = totalCount;
}
/**
* 获取当前页记录数
* @return count 当前页记录数
*/
public int getCount() {
count = pageSize;
int mod = totalCount % pageSize;
if (pageNo == this.getTotalPage() && mod > 0) {
count = mod;
}else if (pageNo> this.getTotalPage()) {
count = 0;
}
return count;
}
/**
* 获取总页数
* @return totalPage 总页数
*/
public int getTotalPage() {
if (totalCount < 0) {
totalPage = -1;
}
totalPage = totalCount / pageSize;
if (totalCount % pageSize > 0) {
totalPage++;
}
return totalPage;
}
/**
* 获取排序字段
* @return sort 排序字段
*/
public String getSort() {
return sort;
}
/**
* 设置排序字段
* @param sort 排序字段
*/
public void setSort(final String sort) {
this.sort = sort;
}
/**
* 获取排序类型(升序asc降序desc)
* @return sortType 排序类型(升序asc降序desc)
*/
public String getSortType() {
return sortType;
}
/**
* 设置排序类型(升序asc降序desc)
* @param sortType 排序类型(升序asc降序desc)
*/
public void setSortType(final String sortType) {
// 检查sortType字符串的合法值
String[] sortTypes = StringUtils.split(StringUtils.lowerCase(sortType),',');
for (String sortTypeStr : sortTypes) {
if (!StringUtils.equals(DESC, sortTypeStr) && !StringUtils.equals(ASC, sortTypeStr))
throw new IllegalArgumentException(String.format("Invalid SortType %S", sortTypeStr));
}
this.sortType = StringUtils.lowerCase(sortType);
}
/**
* 是否有下一页
*
* @return boolean 返回true表示有下页,反之没有
*/
public boolean isHasNext() {
return (pageNo + 1 <= getTotalPage());
}
/**
* 获取下一页码数
* @return int 页码数
*/
public int getNextPage() {
if (isHasNext())
return pageNo + 1;
else
return pageNo;
}
/**
* 是否有上一页
* @return boolean 返回true表示有上一页,反之没有
*/
public boolean isHasPre() {
return (pageNo - 1 >= 1);
}
/**
* 获取上一页码数
* @return int 上一页码数
*/
public int getPrePage() {
if (isHasPre())
return pageNo - 1;
else
return pageNo;
}
/**
* 获取请求次数
* @return draw 请求次数
*/
public Integer getDraw() {
return draw;
}
/**
* 设置请求次数
* @param draw 请求次数
*/
public void setDraw(Integer draw) {
this.draw = draw;
}
/**
* 获取当前起始位置
* @return start 当前起始位置
*/
public Integer getStart() {
return start;
}
/**
* 设置当前起始位置
* @param start 当前起始位置
*/
public void setStart(Integer start) {
this.start = start;
}
/**
* 获取页面显示记录数量
* @return length 页面显示记录数量
*/
public Integer getLength() {
return length;
}
/**
* 设置页面显示记录数量
* @param length 页面显示记录数量
*/
public void setLength(Integer length) {
this.length = length;
}
/**
* 获取搜索相关参数
* @return search
*/
public Map<String, String> getSearch() {
return search;
}
/**
* 设置搜索相关参数
* @param search
*/
public void setSearch(Map<String, String> search) {
this.search = search;
}
/**
* 获取排序相关参数
* @return order
*/
public List<Map<String, String>> getOrder() {
return order;
}
/**
* 设置排序相关参数
* @param order
*/
public void setOrder(List<Map<String, String>> order) {
this.order = order;
}
}