具體分頁代碼

import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Optional; public class PageUtil { /** * 封裝表格提交的分頁參數(簡單的封裝) * @return */ public static PageRequest getGridPageParams() { int pageNumber = 0; int pageSize = 20; HttpServletRequest request = ServiceUtil.getRequest(); String P_pageNumber = request.getParameter("P_pageNumber"); String P_pagesize = request.getParameter("P_pagesize"); String order = request.getParameter("P_orders"); String stringDirection = request.getParameter("sord"); PageRequest pageRequest = null; if (null != P_pageNumber) { pageNumber = Integer.parseInt(P_pageNumber) - 1; } if (null != P_pagesize) { pageSize = Integer.parseInt(P_pagesize); } if (order != null && stringDirection != null) { //TODO Optional<Direction> direction = Direction.fromOptionalString(stringDirection); Sort sort = new Sort(direction.get(), order); pageRequest = new PageRequest(pageNumber, pageSize, sort); return pageRequest; } pageRequest = new PageRequest(pageNumber, pageSize); return pageRequest; } /** * 封裝表格提交的分頁參數(簡單的封裝) * * @return */ public static PageRequest getGridPageParams(Long totalElements) { int pageNumber = 0; int pageSize = 20; HttpServletRequest request = ServiceUtil.getRequest(); String P_pageNumber = request.getParameter("P_pageNumber"); String P_pagesize = request.getParameter("P_pagesize"); String order = request.getParameter("P_orders"); String stringDirection = request.getParameter("sord"); PageRequest pageRequest = null; if (null != P_pageNumber) { pageNumber = Integer.parseInt(P_pageNumber) - 1; } if (null != P_pagesize) { pageSize = Integer.parseInt(P_pagesize); } //若之前頁面已經能展示所有數據,就將pageNumber設置爲0,跳轉到第一頁 if (totalElements <= pageSize * pageNumber) { pageNumber = 0; } if (order != null && stringDirection != null) { Optional<Direction> direction = Direction.fromOptionalString(stringDirection); Sort sort = new Sort(direction.get(), order); pageRequest = new PageRequest(pageNumber, pageSize, sort); return pageRequest; } pageRequest = new PageRequest(pageNumber, pageSize); return pageRequest; } public static PageVo parseFromPage(Page page) { PageVo pageVo = new PageVo(); pageVo.setData(page.getContent()); pageVo.setPageNumber(page.getNumber() + 1); pageVo.setPageSize(page.getSize()); pageVo.setTotal(page.getTotalElements()); pageVo.setTotalPages(page.getTotalPages()); return pageVo; } public static PageVo parseFromList(List list) { PageVo pageVo = new PageVo(); pageVo.setData(list); pageVo.setPageNumber(1); pageVo.setPageSize(20); pageVo.setTotal(Long.valueOf(list.size())); pageVo.setTotalPages(1); return pageVo; } /** * 根據查詢的結果和前臺分頁參數進行分頁 */ public static PageVo parseFromList(List list, Pageable pageable) { PageVo pageVo = new PageVo(); int pageSize = pageable.getPageSize(); long totalElements = Long.valueOf(list.size());//list包含所有查詢到的數據(sql中沒有limit) pageVo.setData(list); pageVo.setPageNumber(pageable.getPageNumber()); pageVo.setPageSize(pageSize); pageVo.setTotal(totalElements); pageVo.setTotalPages((int) (totalElements / pageSize + Integer.valueOf((totalElements % pageSize == 0 ? 0 : 1)))); return pageVo; } } Entity: import org.springframework.stereotype.Component; import java.util.List; @Component public class PageVo { private static final long serialVersionUID = 1L; private List<?> data; private Integer pageNumber; private Integer pageSize; private Long total; private Integer totalPages; public static long getSerialversionuid() { return serialVersionUID; } public List<?> getData() { return data; } public Integer getPageNumber() { return pageNumber; } public Integer getPageSize() { return pageSize; } public Long getTotal() { return total; } public Integer getTotalPages() { return totalPages; } public void setData(final List<?> data) { this.data = data; } public void setPageNumber(final Integer pageNumber) { this.pageNumber = pageNumber; } public void setPageSize(final Integer pageSize) { this.pageSize = pageSize; } public void setTotal(final Long total) { this.total = total; } public void setTotalPages(final Integer totalPages) { this.totalPages = totalPages; } /** * 查詢用戶一段時間內的交易總計的專用假分頁,Controller中的userList(User user)方法用到 * @param data 僅有當前頁包含的數據 * @param pageNumber * @param pageSize * @param totalElements * @return */ public static PageVo fakePageVoForTransRecord(List<?> data, Integer pageNumber, final Integer pageSize, Long totalElements) { PageVo page = new PageVo(); page.setData(data); page.setPageNumber(pageNumber); //這些都是返回頁面的數據,後臺之前已經分頁過了 page.setPageSize(pageSize); page.setTotal(totalElements); page.setTotalPages((int) (totalElements / pageSize + Integer.valueOf((totalElements % pageSize == 0 ? 0 : 1)))); return page; } /** * 假分頁 * @param data 包含查詢到的所有頁面的數據 * @param pageNumber * @param pageSize * @return */ public static PageVo fakePageVo(List<?> data, Integer pageNumber, final Integer pageSize) { PageVo page = new PageVo(); Long total = Long.valueOf(data.size()); if (total <= pageSize * (pageNumber - 1)) { //若之前頁面已經能展示所有數據,就將pageNumber設置爲1,跳轉到第一頁 pageNumber = 1; } if (total < pageSize * pageNumber) { //判斷當前頁pageNumber是否爲最後一頁 page.setData(data.subList((pageNumber - 1) * pageSize, total.intValue())); } else { page.setData(data.subList((pageNumber - 1) * pageSize, pageNumber * pageSize)); } page.setPageNumber(pageNumber); page.setPageSize(pageSize); page.setTotal(total); page.setTotalPages((int) (total / pageSize + Integer.valueOf((total % pageSize == 0 ? 0 : 1)))); return page; } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章