mybatis中PageHelper使用實例

官方文檔介紹

pageHelper官方文檔

代碼使用示例:

代碼涉及依賴:

        <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());
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章