项目中有些功能使用到了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);
参考:添加链接描述
-------------如果对你有用,请给个赞,谢谢~~
-------------欢迎各位留言交流,如有不正确的地方,请予以指正。【Q:981233589】