java數據列表 分頁對象
[Java]代碼
import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * 分頁 * * from project: http://www.zyiqibook.com/201505/article0511162118297.html */ public class Page<T> implements Serializable { /** * */ private static final long serialVersionUID = -4906400433425467744L; private static int DEFAULT_PAGE_SIZE = 20; /** * 每頁記錄條數 */ private int pageSize = DEFAULT_PAGE_SIZE; /** * 當前頁第一條數據在List中的位置,從0開始 */ private long start; private List<T> data; private long totalCount; // 總記錄數 /** * 構造方法 */ public Page() { this(0, 0, DEFAULT_PAGE_SIZE, new ArrayList<T>()); } /** * 默認構造方法. * * @param start 本頁數據在數據庫中的起始位置 * @param totalSize 數據庫中總記錄條數 * @param pageSize 本頁容量 * @param data 本頁包含的數據 */ public Page(long start, long totalSize, int pageSize, Collection<T> data) { this.pageSize = pageSize; this.start = start; this.totalCount = totalSize; this.data = new ArrayList<T>(data); } /** * 取總記錄數. */ public long getTotalCount() { return this.totalCount; } /** * 取總頁數. */ public long getTotalPageCount() { if (pageSize <= 0) { return 0; } return (totalCount + pageSize - 1) / pageSize; } /** * 取每頁數據容量. */ public int getPageSize() { return pageSize; } /** * 取當前頁中的記錄. */ public List<T> getResult() { return data; } /** * 取該頁當前頁碼,頁碼從1開始. */ public int getCurrentPageNo() { return (int)(start / pageSize + 1); } /** * 該頁是否有下一頁. */ public boolean hasNextPage() { return this.getCurrentPageNo() < this.getTotalPageCount(); } /** * 該頁是否有上一頁. */ public boolean hasPreviousPage() { return this.getCurrentPageNo() > 1; } /** * 獲取任一頁第一條數據在數據集的位置,每頁條數使用默認值. */ protected static int getStartOfPage(int pageNo) { return getStartOfPage(pageNo, DEFAULT_PAGE_SIZE); } /** * 獲取任一頁第一條數據在數據集的位置. */ public static int getStartOfPage(int pageNo, int pageSize) { return (pageNo - 1) * pageSize; } }
本文由用戶 BeulahGibbs 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!