package com.jrails.page; /** * Created by arden * User: <a href="mailto:arden.emily@gmail.com">arden</a> * Date: 2009-2-12 12:26:51 */ public abstract class Page<T> { // 当前页 protected int pageNo = 1; // 一页显示多少条记录 protected int pageSize = -1; // 总共多少条 protected int totalCount = -1; public Page() {} public Page(int pageSize) { this.pageSize = pageSize; } /** * 获得每页的记录数量,无默 * 认值. */ public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } /** * 是否已设置每页的记录数量. */ public boolean isPageSizeSetted() { return pageSize > -1; } /** * 获得当前页的页号,序号从1开始,默认为1. */ public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { if (pageNo <= 0) { this.pageNo = 1; } else { this.pageNo = pageNo; } } /** * 根据pageNo和pageSize计算当前页第一条记录在总结果集中的位置,序号从0开始. */ public int getFirst() { if (pageNo < 1 || pageSize < 1) return -1; else return ((pageNo - 1) * pageSize); } /** * 是否已设置第一条记录记录在总结果集中的位置. */ public boolean isFirstSetted() { return (pageNo > 0 && pageSize > 0); } /** * 总记录数. */ public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } /** * 计算总页数. */ public int getTotalPages() { if (totalCount == -1) return -1; int count = totalCount / pageSize; if (totalCount % pageSize > 0) { count++; } return count; } /** * 是否还有下一页. */ public boolean isHasNext() { return (pageNo + 1 <= getTotalPages()); } /** * 返回下页的页号,序号从1开始. */ public int getNextPage() { if (isHasNext()) return pageNo + 1; else return pageNo; } /** * 是否还有上一页. */ public boolean isHasPre() { return (pageNo - 1 >= 1); } /** * 返回上页的页号,序号从1开始. */ public int getPrePage() { if (isHasPre()) return pageNo - 1; else return pageNo; } }