irpas技术客

使用PageHelper的分页时,页码大于数据总页数时,却返回最后一页数据,需求:返回数据为空_yyongsheng_pagehelper 最后一页

网络 6993

使用若依的框架 遇到的分页问题:使用PageHelper时发现超过最大数量的页数,仍然可以返回数据(最后一页数据),需求:返回数据为空。

原因是pagehelper的配置信息reasonable的默认配置。

当pagehelper.reasonable=true 先设定数据库中查询的范围,在根据条件查询。此时查询范围外的数据就查不到了 当pagehelper.reasonable=false 先根据条件查询数据库,然后在根据范围进行分页。

但是修改了application.yml中的分页配置,分页获取到的数据没有任何变化。如下图:

那么直接修改PageUtils.startPage();方法中的代码,可解决问题; 如下图:

如果以上内容无法解决问题,可参考以下内容:

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

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

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

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

解决方案: 修改使用方式

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

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

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

修改使用方式?

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

参考:Mybatis-PageHelper/HowToUse.md at master · pagehelper/Mybatis-PageHelper · GitHub?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #pageHelper #最后一页