Pagehelper 在count时过滤order by,导致返回total不正确

29 篇文章 1 订阅
10 篇文章 0 订阅
  • 自定义Page<T>

import java.util.List;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

public class Page<T> {
    private List<T> list;
    private long total;
    private int pageNum;
    private int pageSize;

    public static void startPage(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
    }

    public static <T> Page<T> from(List<T> data) {
        PageInfo<T> page = new com.github.pagehelper.PageInfo<T>(data);
        Page<T> ret = new Page<>();
        ret.list = data;
        ret.total = page.getTotal();
        ret.pageNum = page.getPageNum();
        ret.pageSize = page.getPageSize();
        return ret;
    }

    public Page() {
    }

    public Page(List<T> list) {
        this.list = list;
    }

    public Page(List<T> list, int pageNum, int pageSize, long total) {
        this.list = list;
        this.total = total;
        this.pageNum = pageNum;
        this.pageSize = pageSize;
    }

    public List<T> getList() {
        return list;
    }

    public long getTotal() {
        return total;
    }

    public int getPageNum() {
        return pageNum;
    }

    public int getPageSize() {
        return pageSize;
    }
}

 

  •  创建Model: RiskFundLog
  • 创建Vo: RiskFunkLogVo
  • Service如下
  @Override
    public Page<RiskFundLogVo> getRiskLog(int pageNum, int pageSize) {
        Page.startPage(pageNum, pageSize);
        List<RiskFundLog> pageList = riskFundLogDao.search(new RiskFundLog());

        try {
            if (CollectionUtils.isNotEmpty(pageList)) {
                List<RiskFundLogVo> ret = new ArrayList<>(pageList.size());
                for (RiskFundLog item : pageList) {
                    RiskFundLogVo vo = new RiskFundLogVo();
                    BeanUtils.copyProperties(vo, item);

                    ret.add(vo);
                }

                com.github.pagehelper.Page page = (com.github.pagehelper.Page)pageList;
                return new Page(ret, page.getPageNum(), page.getPageSize(), page.getTotal());
            }
        } catch (Exception e) {
            logger.error("RiskFundLogServiceImpl#getRiskLog exception occurred:", e);
        }

        List<RiskFundLogVo> emptyList = new ArrayList<>(1);
        RiskFundLogVo emptyObj = new RiskFundLogVo();
        emptyList.add(emptyObj);
        return new Page<>(emptyList);
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值