解决PageHelper的pageNum失效问题

前言

     近期项目中用到Mabits的PageHelper插件,在测试时发现分页失效了,特记录下此过程。

问题描述:PageHelper的分页失效

功能描述

    SpringBoot (version2.x) ,实现按照条件分页查询用户信息

代码实现

项目依赖 pom.xml

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

application.yml 配置

#分页插件
pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countSql
  #pageSize=0 返回所有
  pageSizeZero: true 

查询用户方法

public BasePageResult<List<UserInfoVo>> queryUserInfoListByPage(UserInfoRequestVo parm) {
        BasePageResult<List<UserInfoVo>> pageResult = new BasePageResult<>();
        PageHelper.startPage(parm.getPage(), parm.getPage_size());
        List<UserInfoVo> userList = userMapper.queryUserInfoByCondition(parm.getName().trim());
        PageInfo<UserInfoVo> pageInfo = new PageInfo<>(userList);
        ……
        return pageResult;
}

方法测试

     查询第一页,每页10条,返回的是10条记录;查询第二页,每页10条,返回的是10条记录,查询第三页,每页10条记录,返回的是10条记录;现象是无论page为多少,返回的都是10条记录,而且是一模一样的10条记录
     数据说明:数据库里边符合条件的记录只有10条。
     于是我觉得,我的分页插件怕是被用坏了😭😭😭
在这里插入图片描述

sql执行现象

分页sql 只有一个分页参数: limit ?
在这里插入图片描述
正常情况下分页参数(pageNum !=1)limit ?,?
在这里插入图片描述

问题排查与分析

  • 检查自己写的方法中分页参数是不是被处理过,并没有!
  • debug进PageHelper 代码,发现了问题,pageNum一开始为3,后面还会变为1 !!!

代码知道答案:

Page 初始化及执行分页查询时都会用到一个参数: reasonable, 顾名思义是 合理化,代码中也有注释说是分页合理化,这个参数的值默认为false。如下图所示:当设置了true,并且当前查询的页码 大于 总页数时,就会进行分页的合理化,会把当前查询的页码重置为总页数,也就是说查询了最后一页的pageSize 记录。
代码执行到下图中的setTotal()方法,total = 10, pages = 1, reasonable= true && 3> 1 ==> pageNum = pages =1 ,这就可以说明 当pageNum大于1时,查询结果会一直是库里边的10条记录;

在这里插入图片描述

reasonable 是在哪挖的坑呢?
是application.yml中有一项是 pagehelper.reasonable =true ,具体大家可以往上看[application.yml 配置] 部分。

当然了pageHelper 官网也有说明:https://github.com/pagehelper/Mybatis-PageHelper
在这里插入图片描述

问题解决

  • application.yml 中修改pagehelper.reasonable为false
  • 通过初始化PagHelper时参数reasonable为false,参考下图
PageHelper.startPage(parm.getPage(),parm.getPage_size(),true,false,false);

在这里插入图片描述

  • 如果通过系统前端页面测试的话,按照目前的页面设置不会出现此问题 😂(分页组件只会显示到总页码)

参考链接

https://blog.csdn.net/shenchaohao12321/article/details/84201136
https://www.cnblogs.com/lykbk/p/sdsdshjkhoh345345345345345.html

总结

     学习知识优先选择官网 ,今天七夕节,祝大家都能找到合适的人生伴侣❤️!

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的大白啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值