PageHelper分页的坑,查出来的total有误,总是等于pageSize的值

项目场景:

使用PageHelper分页查询,返回数据错误


问题描述

查出来的总数total,总是等于每页显示个数,不是真实数据数量

参数:pageNumber=1  pageSize=2,数据库实际数量20

{
  "page": {
    "total": 2,
    "list": ["1","2"],
    "pageNum": 1,
    "pageSize": 2,
    "size": 7,
    "startRow": 1,
    "endRow": 7,
    "pages": 1,
    "prePage": 0,
    "nextPage": 0,
    "isFirstPage": true,
    "isLastPage": true,
    "hasPreviousPage": false,
    "hasNextPage": false,
    "navigatePages": 8,
    "navigatepageNums": [
      1
    ],
    "navigateFirstPage": 1,
    "navigateLastPage": 1
  }
}



原因分析:

List<XxxxVO> xxxxVOS = BeanHelper.copyCollection(list, XxxxVO .class);
new PageInfo<>(xxxxVOS);//问题出在此处
//注意:此处的BeanHelper是自定义的类型转换类

使用分页后,对查询到的数据进行类型转换后,再赋值到PageInfo后,数据总数total就会发生改变,变为当前集合的值,而不再是数据库总数的值。


解决方案:

List<XxxxEntity> list = queryList(dto);
PageInfo pageInfo = new PageInfo<>(list);//先赋值,注意不要写具体泛型
List<XxxxVO> xxxxVOS = BeanHelper.copyCollection(list, XxxxVO .class);
pageInfo.setList(xxxxVOS);//再将转型后的集合放进去

先将查询到的list集合放入PageInfo中,此处注意不要指定数据泛型,然后再类型转换后,将转换后的集合放进去

{
  "page": {
    "total": 20,
    "list": ["1","2"],
    "pageNum": 1,
    "pageSize": 2,
    "size": 7,
    "startRow": 1,
    "endRow": 7,
    "pages": 1,
    "prePage": 0,
    "nextPage": 0,
    "isFirstPage": true,
    "isLastPage": true,
    "hasPreviousPage": false,
    "hasNextPage": false,
    "navigatePages": 8,
    "navigatepageNums": [
      1
    ],
    "navigateFirstPage": 1,
    "navigateLastPage": 1
  }
}

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值