官方文檔介紹
代碼使用示例:
代碼涉及依賴:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.11</version>
</dependency>
工具類
package com.wanli.pay.payment.util;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.wanli.pay.payment.facade.vo.PageResultVO;
import com.wanli.pay.payment.facade.vo.PageVO;
import com.wanli.pay.payment.service.SelectPageFunc;
import org.springframework.beans.BeanUtils;
import java.util.Date;
import java.util.List;
/**
* Created by shiqite on 2019-06-12
*/
public final class PageUtils {
@SuppressWarnings("unchecked")
public static <T> PageResultVO<T> selectPage(PageVO vo, SelectPageFunc selectPageFunc) {
if (vo == null) {
vo = new PageVO();
}
if (vo.getPageNum() == null) {
vo.setPageNum(1);
}
if (vo.getPageSize() == null) {
vo.setPageSize(10);
}
Page<T> sourcePage = PageHelper.startPage(vo.getPageNum(), vo.getPageSize());
List<?> selectResult = selectPageFunc.doSelect();
PageResultVO<T> targetPage = new PageResultVO<>();
BeanUtils.copyProperties(sourcePage, targetPage);
targetPage.setResultList((List<T>) selectResult);
targetPage.setRequestTime(new Date());
return targetPage;
}
}
package com.wanli.pay.payment.facade.vo;
import java.util.Date;
import java.util.List;
/**
* @author: Meng weilong
* @date: 2020/4/16 11:53 上午
**/
public class PageResultVO<T> {
private Long total;
private Integer pageNum;
private Integer pageSize;
private Integer pages;
private Date requestTime;
private List<T> resultList;
public Long getTotal() {
return this.total;
}
public Integer getPageNum() {
return this.pageNum;
}
public Integer getPageSize() {
return this.pageSize;
}
public Integer getPages() {
return this.pages;
}
public Date getRequestTime() {
return this.requestTime;
}
public List<T> getResultList() {
return this.resultList;
}
public PageResultVO<T> setTotal(final Long total) {
this.total = total;
return this;
}
public PageResultVO<T> setPageNum(final Integer pageNum) {
this.pageNum = pageNum;
return this;
}
public PageResultVO<T> setPageSize(final Integer pageSize) {
this.pageSize = pageSize;
return this;
}
public PageResultVO<T> setPages(final Integer pages) {
this.pages = pages;
return this;
}
public PageResultVO<T> setRequestTime(final Date requestTime) {
this.requestTime = requestTime;
return this;
}
public PageResultVO<T> setResultList(final List<T> resultList) {
this.resultList = resultList;
return this;
}
@Override
public String toString() {
return "PageResultVO(total=" + this.getTotal() + ", pageNum=" + this.getPageNum() + ", pageSize=" + this.getPageSize() + ", pages=" + this.getPages() + ", requestTime=" + this.getRequestTime() + ", resultList=" + this.getResultList() + ")";
}
public PageResultVO() {
}
public PageResultVO(final Long total, final Integer pageNum, final Integer pageSize, final Integer pages, final Date requestTime, final List<T> resultList) {
this.total = total;
this.pageNum = pageNum;
this.pageSize = pageSize;
this.pages = pages;
this.requestTime = requestTime;
this.resultList = resultList;
}
public static class PageResultVOBuilder<T> {
private Long total;
private Integer pageNum;
private Integer pageSize;
private Integer pages;
private Date requestTime;
private List<T> resultList;
PageResultVOBuilder() {
}
public PageResultVO.PageResultVOBuilder<T> total(final Long total) {
this.total = total;
return this;
}
public PageResultVO.PageResultVOBuilder<T> pageNum(final Integer pageNum) {
this.pageNum = pageNum;
return this;
}
public PageResultVO.PageResultVOBuilder<T> pageSize(final Integer pageSize) {
this.pageSize = pageSize;
return this;
}
public PageResultVO.PageResultVOBuilder<T> pages(final Integer pages) {
this.pages = pages;
return this;
}
public PageResultVO.PageResultVOBuilder<T> requestTime(final Date requestTime) {
this.requestTime = requestTime;
return this;
}
public PageResultVO.PageResultVOBuilder<T> resultList(final List<T> resultList) {
this.resultList = resultList;
return this;
}
@Override
public String toString() {
return "PageResultVO.PageResultVOBuilder(total=" + this.total + ", pageNum=" + this.pageNum + ", pageSize=" + this.pageSize + ", pages=" + this.pages + ", requestTime=" + this.requestTime + ", resultList=" + this.resultList + ")";
}
}
}
package com.wanli.pay.payment.facade.vo;
/**
* @author: Meng weilong
* @date: 2020/4/16 2:06 下午
**/
public class PageVO {
private Long total;
private Integer pageNum;
private Integer pageSize;
private Integer pages;
public static PageVO.PageVOBuilder builder() {
return new PageVO.PageVOBuilder();
}
public Long getTotal() {
return this.total;
}
public Integer getPageNum() {
return this.pageNum;
}
public Integer getPageSize() {
return this.pageSize;
}
public Integer getPages() {
return this.pages;
}
public void setTotal(final Long total) {
this.total = total;
}
public void setPageNum(final Integer pageNum) {
this.pageNum = pageNum;
}
public void setPageSize(final Integer pageSize) {
this.pageSize = pageSize;
}
public void setPages(final Integer pages) {
this.pages = pages;
}
@Override
public String toString() {
return "PageVO(total=" + this.getTotal() + ", pageNum=" + this.getPageNum() + ", pageSize=" + this.getPageSize() + ", pages=" + this.getPages() + ")";
}
public PageVO() {
}
public PageVO(final Long total, final Integer pageNum, final Integer pageSize, final Integer pages) {
this.total = total;
this.pageNum = pageNum;
this.pageSize = pageSize;
this.pages = pages;
}
public static class PageVOBuilder {
private Long total;
private Integer pageNum;
private Integer pageSize;
private Integer pages;
PageVOBuilder() {
}
public PageVO.PageVOBuilder total(final Long total) {
this.total = total;
return this;
}
public PageVO.PageVOBuilder pageNum(final Integer pageNum) {
this.pageNum = pageNum;
return this;
}
public PageVO.PageVOBuilder pageSize(final Integer pageSize) {
this.pageSize = pageSize;
return this;
}
public PageVO.PageVOBuilder pages(final Integer pages) {
this.pages = pages;
return this;
}
@Override
public String toString() {
return "PageVO.PageVOBuilder(total=" + this.total + ", pageNum=" + this.pageNum + ", pageSize=" + this.pageSize + ", pages=" + this.pages + ")";
}
}
}
package com.wanli.pay.payment.service;
import java.util.List;
@FunctionalInterface
public interface SelectPageFunc {
List<?> doSelect();
}
代碼使用示例(與數據庫交互代碼省略):
public PageResultVO<QryRespDto> selectByPayNo(QryDto dto) {
return PageUtils.selectPage(dto, () -> transfer(dto));
}
private List<QryRespDto> transfer(QryDto dto) {
List<PayOrderInfoEntity> entity = payOrderInfoService.selectByPayNo(dto.getPayNo());
return Optional.ofNullable(entity)
.orElse(new ArrayList<>())
.stream()
.map(o -> {
QryRespDto priorityRespVO = new QryRespDto();
priorityRespVO.setCreateTime(o.getCreateTime());
priorityRespVO.setUpdateTime(o.getUpdateTime());
priorityRespVO.setPayNo(o.getPayNo());
priorityRespVO.setOrderStatus(o.getOrderStatus());
priorityRespVO.setFinishTime(o.getFinishTime());
return priorityRespVO;
})
.collect(Collectors.toList());
}