• 知识积累:PageHelper分页问题,页码小于总页数和大于总页数返回数据问题,PageHelper分页失效


    问题:

    项目中有些功能使用到了PageHelper进行分页处理,使用的方式为下方代码:

    PageHelper.startPage(request.getPageNum(), request.getPageSize(), true);
    
    • 1

    这种使用方式会出现,
    当请求的页码数=0时,会返回所有数据;
    当请求的页码数小于0时,返回第一页数据,页码数大于总页数时,会返回最后一页的数据。


    通过debug跟踪发现是由于reasonable参数默认为true的时候,会进行pageNum的重置为pages大小,从而导致当请求的页码数大于总页数时,会返回最后一页的数据问题。
    在这里插入图片描述
    在这里插入图片描述

    解决方案:

    修改使用方式

    PageHelper.startPage(request.getPageNum(), request.getPageSize(), true,false,null);
    
    • 1

    上面的方式可以解决当请求的页码数小于0时,返回第一页数据,页码数大于总页数时,会返回最后一页的数据的问题。

    还需要分析当请求的页码数小于总页数时,会返回所有数据;
    这个是由另一个参数pageSizeZero控制;
    pageSizeZero说明:当设置为true的时候(默认为true),如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
    这里设置为false,解决当请求的页码数=0时,会返回所有数据问题。

    修改使用方式

    PageHelper.startPage(request.getPageNum(), request.getPageSize(), true,false,false);
    
    • 1

    参考:添加链接描述

    -------------如果对你有用,请给个赞,谢谢~~
    -------------欢迎各位留言交流,如有不正确的地方,请予以指正。【Q:981233589】

  • 相关阅读:
    vscode - 环境准备 - 修改缓存路径
    [极客大挑战 2019]Http1
    进程和线程【详细总结】
    LeetCode 92. Reverse Linked List II【链表,头插法】中等
    使用Spring来管理对象关系映射(ORM)
    Prometheus&Alertmanager告警推送
    SQL性能分析与优化
    postgresql 授权
    centos的root密码忘记或失效的解决办法
    docker安装es单节点设置密码(加ik分词器)
  • 原文地址:https://blog.csdn.net/XinTeng2012/article/details/126755671