zoukankan      html  css  js  c++  java
  • 解决PageHelper的pageNum失效问题

    功能描述

    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,

  • 相关阅读:
    C++的内存管理
    PostgreSQL学习手册(函数和操作符<一>)
    C++位操作
    C++的预处理
    PostGIS之路——几何对象编辑(二)
    C++运算符重载
    PostgreSQL学习手册(函数和操作符<二>)
    PostGIS之路——几何对象处理函数(一)
    postgresql命令
    不要迷失在技术的海洋中
  • 原文地址:https://www.cnblogs.com/yuarvin/p/15545408.html
Copyright © 2011-2022 走看看