package li.dao; import li.util.Files; /** * 分页对象 * * @author li (limingwei@mail.com) * @version 0.1.2 (2012-06-17) */ public class Page { public static final Page MAX = new Page(1, Integer.MAX_VALUE).count(false); public static final Page ONE = new Page(1, 1).count(false); /** * 默认PageSize为20,可以在配置文件中修改 */ public static final Integer DEFAULT_SIZE = Integer.valueOf(Files.config().getProperty("pageSize", "20")); private Integer pageSize = DEFAULT_SIZE;// 单页记录数 private Integer pageNumber = 1;// 当前页数 private Integer recordCount = 0;// 总记录数 private Boolean count = true;// 是否进行count查询 /** * 默认构造函数 */ public Page() {} /** * 带有pageNumber,pageSize两个参数的构造函数 */ public Page(Integer pageNumber, Integer pageSize) { this.pageNumber = pageNumber; this.pageSize = pageSize; } /** * 是否进行count查询 */ public Boolean count() { return this.count; } /** * 设置是否进行count查询 */ public Page count(Boolean flag) { this.count = flag; return this; } /** * 返回当前页码 */ public Integer getPageNumber() { return this.pageNumber; } /** * 设置页码,跳转到第 pn 页 */ public Page setPageNumber(Integer pn) { this.pageNumber = (null == pn || pn < 1) ? 1 : pn; return this; } /** * 返回单页记录数 */ public Integer getPageSize() { return this.pageSize; } /** * 设置单页记录数,如果不想是用默认值 20 的话 */ public Page setPageSize(Integer pageSize) { this.pageSize = pageSize; return this; } /** * 设置总记录数,会根据recordCount同步设置pageCount */ public Page setRecordCount(Integer recordCount) { this.recordCount = (null == recordCount || recordCount < 1) ? 0 : recordCount; return this; } /** * 返回总记录数 */ public Integer getRecordCount() { return this.recordCount; } /** * 得到总页数 */ public Integer getPageCount() { return (getRecordCount() / getPageSize()) + ((0 == getRecordCount() % getPageSize()) ? 0 : 1); } /** * 返回上一页pageNumber,经过判断,使不会小于 1 */ public Integer getPrevious() { return getPageNumber() > 1 ? getPageNumber() - 1 : 1; } /** * 返回下一页pageNumber,经过判断,使不会大于getPageCount */ public Integer getNext() { return getPageNumber() + 1 < getPageCount() ? getPageNumber() + 1 : getPageCount(); } /** * 返回当前页的第一条记录的序列号 */ public Integer getFrom() { return (getPageNumber() - 1) * getPageSize(); } }