springmvc 分頁查詢的簡單實現
阿新 • • 發佈:2019-01-10
2.PageState.javapackage com.cm.contract.common; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.ToStringBuilder; /**分頁類 * @author FENGWEI * @date 2016-5-23 */ public class Page implements java.io.Serializable{ private static final long serialVersionUID = 1L; //前一頁 private Boolean hasPrePage; //後一頁 private Boolean hasNextPage; //每頁顯示多少條:預設20條 private Long everyPage = 20L; //總頁數 private Long totalPage; //當前第多少頁:預設第1頁 private Long currentPage = 1L; //開始下標 private Long beginIndex; //結束下標 private Long endinIndex; //總共多少條 private Long totalCount; //排序列名 private String sortName; //排序狀態 private String sortState; //排序資訊 private String sortInfo; //是否排序 private Boolean sort = false; private String defaultInfo = " "; public String getDefaultInfo() { return defaultInfo; } public void setDefaultInfo(String defaultInfo) { this.defaultInfo = defaultInfo; } public String getSortInfo() { return sortInfo; } public void setSortInfo(String sortInfo) { this.sortInfo = sortInfo; } public String getSortName() { return sortName; } public void setSortName(String sortName) { setPageSortState(sortName); } public String getSortState() { return sortState; } public void setSortState(String sortState) { this.sortState = sortState; } public Page() { } /** * 常用,用於計算分頁 * */ public Page(Long totalRecords){ this.totalCount = totalRecords; setTotalPage(getTotalPage(totalRecords)); } /** * 設定每頁顯示多少條時使用 * */ public Page(Long everyPage,Long totalRecords){ this.everyPage = everyPage; this.totalCount = totalRecords; setTotalPage(getTotalPage(totalRecords)); } /** * @param state 狀態碼 * @param value 到第多少頁或者設定每頁顯示多少條或者為排序列名 */ public void pageState(int index,String value) { sort = false; switch (index) { case 0 :setEveryPage(Long.parseLong(value));break; case 1 :first();break; case 2: previous();break; case 3: next();break; case 4: last();break; case 5: sort = true;sort(value);break; case 6 ://到指定第多少頁 setCurrentPage(Long.parseLong(value)); break; } } /** * 最前一頁 */ private void first() { currentPage = 1L; } private void previous() { currentPage--; } private void next() { currentPage++; } private void last() { currentPage = totalPage; } private void sort(String sortName) { //設定排序狀態 setPageSortState(sortName); } /** * 計算總頁數 * */ private Long getTotalPage(Long totalRecords) { Long totalPage = 0L; everyPage = everyPage == null ? 10L : everyPage; if (totalRecords % everyPage == 0) totalPage = totalRecords / everyPage; else { totalPage = totalRecords / everyPage + 1; } return totalPage; } public Long getBeginIndex() { this.beginIndex = (currentPage - 1) * everyPage; return this.beginIndex; } public void setBeginIndex(Long beginIndex) { this.beginIndex = beginIndex; } public Long getCurrentPage() { this.currentPage = currentPage == 0 ? 1 : currentPage; return this.currentPage; } public void setCurrentPage(Long currentPage) { if(0 == currentPage){ currentPage = 1L; } this.currentPage = currentPage; } public Long getEveryPage() { this.everyPage = everyPage == 0 ? 10 : everyPage; return this.everyPage; } public void setEveryPage(Long everyPage) { this.everyPage = everyPage; } public Boolean getHasNextPage() { this.hasNextPage = (currentPage != totalPage) && (totalPage != 0); return this.hasNextPage; } public void setHasNextPage(Boolean hasNextPage) { this.hasNextPage = hasNextPage; } public Boolean getHasPrePage() { this.hasPrePage = currentPage != 1; return this.hasPrePage; } public void setHasPrePage(Boolean hasPrePage) { this.hasPrePage = hasPrePage; } public Long getTotalPage() { return this.totalPage; } public void setTotalPage(Long totalPage) { if(this.currentPage > totalPage){ this.currentPage = totalPage; } this.totalPage = totalPage; } public Long getTotalCount() { return this.totalCount; } public void setTotalCount(Long totalCount) { setTotalPage(getTotalPage(totalCount)); this.totalCount = totalCount; } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } /** * 設定排序狀態 * */ private void setPageSortState(String newPageSortName){ //判斷之前的排序欄位是否為空 if(StringUtils.isEmpty(sortName)){ //預設排序為升序 this.sortState = PageUtil.ASC; this.sortInfo = PageUtil.PAGE_ASC; }else{ if(StringUtils.equalsIgnoreCase(newPageSortName, sortName)){ //判斷sortState排序狀態值 if(StringUtils.equalsIgnoreCase(sortState, PageUtil.ASC)){ this.sortState = PageUtil.DESC; this.sortInfo = PageUtil.PAGE_DESC; }else{ this.sortState = PageUtil.ASC; this.sortInfo = PageUtil.PAGE_ASC; } }else{ //預設 this.sortState = PageUtil.ASC; this.sortInfo = PageUtil.PAGE_ASC; } } sortName = newPageSortName.toLowerCase(); } public Boolean isSort() { return sort; } public void setSort(Boolean sort) { this.sort = sort; } public Long getEndinIndex() { this.endinIndex = (currentPage) * everyPage; return endinIndex; } public void setEndinIndex(Long endinIndex) { this.endinIndex = endinIndex; } }
3.PageUtil.javapackage com.cm.contract.common; import org.apache.commons.lang.StringUtils; /**分頁狀態類 * @author FENGWEI * @date 2016-5-23 */ public enum PageState { /** * 設定每頁顯示多少條 * */ SETPAGE, /** * 首頁 * */ FIRST, /** * 向前一頁 * */ PREVIOUS, /** * 向後一頁 * */ NEXT, /** * 末頁 * */ LAST, /** * 排序 * */ SORT, /** * 到第多少頁 * */ GOPAGE; /** * @param value 索引名稱 * @return 返回索引下標 */ public static int getOrdinal(String value) { int index = -1; if (StringUtils.isEmpty(value)) { return index; } String newValue = StringUtils.trim(value).toUpperCase(); try { index = valueOf(newValue).ordinal(); } catch (IllegalArgumentException e) {} return index; } }