概述
PageHelper使用三步走:
- 设置分页参数
PageHelper.startPage(pageNum, pageSize);
- SQL查询,无需做额外修改
List<Map<String, String>> productList = mapper.getAllProduct(productName);
- 构建PageInfo 对象
PageInfo pageInfo = new PageInfo<>(productList );
先调用startPage;再正常查询SQL;最后将返回的list封装成PageInfo,此时的PageInfo 对象包含的分页的相关信息,当前页、上一页、当前页数量、总数、总页数等等。
但有的人会遇到pageInfo.getTotal()的总数有误的情况,本质上是pageInfo.getTotal()跟productList.size()的区别
解析:
查看打印的日志,发现有两条查询记录,第一条是count总数的,第二条是加上分页条件的查询,而实际上SQL是没有分页条件的,这是PageHelper去拼接的SQL来查询,也就是说这时查询出的list必然小于等于pageSize。
再看下PageInfo的实现代码,其中是没有total属性的,其父类PageSerializable有total属性
在PageSerializable中,传入的是page对象,则获取其total;若是其他List类型则获取其size
其实第二步查询出来的productList是一个Page类型的,所以才能正确获得分页的总数。
若是传入new ArrayList(),则应该是未分页前的所有数据,才能在代码层面上进行分页,不然就会出现total总数有误的情况。
正确获取分页总数的方法:
1.若只是简单获取总数,直接从Page对象里获取就可以了
((Page) productList).getTotal();
2.构建PageInfo对象,传入 PageHelper.startPage(pageNum, pageSize);后查询出的list对象
PageInfo pageInfo = new PageInfo<>(productList);
pageInfo.getTotal();
3.利用 PageHelper.startPage的Page 对象来获取总数
Page page = PageHelper.startPage(pageNum, pageSize);
List<Map<String, String>> productList = mapper.getAllProduct(productName);
page.getTotal();
最后
以上就是开心抽屉为你收集整理的PageHelpe的total总数不正确回溯的全部内容,希望文章能够帮你解决PageHelpe的total总数不正确回溯所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复