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;
}
}
网友评论