我是靠谱客的博主 迷路魔镜,最近开发中收集的这篇文章主要介绍pageinfo对合并list进行分页_pagehelper多表分页功能实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

当你搜索到pagehelper多表分页实现的时候,我想你对mybatis pagehelper插件的整合与使用已经没有问题了,你遇到的问题应该是List分页数据来源于多张表的时候,pagehelper分页失效了,所以本文只讲述pagehelper多表分页与普通分页细节上的区别。

其实分不了页的原因很简单,因为List数据来源于多张表的时候,PageInfo对象里面的getTotal()方法获取的条数并不是数据总条数,而是每页的条数pagesize,所以你发现列表数据永远都是只有一页数据,下面会介绍解决办法。

先看看正常pagehelper分页,如serviceImpl里面的代码://根据用户id获取考试信息列表

public PageInfo findExamByUserIdAndPageAndPageSize(Long userId, int currPage, int pageSize) {

PageHelper.startPage(currPage, pageSize);

List list = examMapper.selectByUserId(userId);

return new PageInfo(list);

}

note:上面这样是可以正常分页的,PageInfo.getTotal()方法获取的就是总条数,例如每页pageSize显示10条数据,总条数是18条,那么getTotal()方法获取的值就是18条数据。

如果把上面的代码改一下,假如List数据来源于多张表,或者对List列表里面的数据做出了修改,那么分页就会失效,请看代码:public PageInfo findExamByUserIdAndPageAndPageSize(Long userId, int page, int pageSize) {

PageHelper.startPage(page, pageSize);

List list = examMapper.selectByUserId(userId);

List list2 = new ArrayList<>();

for (Exam exam :list){

QuestionType questionType = typeMapper.selectByPrimaryKey(exam.getType());

String typeName = questionType.getName();

exam.setTypeName(typeName);

}

return new PageInfo(list2);

}

note:通过上面这么一改动,PageInfo.getTotal()方法获取到的总条数就不是18条,而是10条了(list.size()),而每页显示数据pageSize也是10,所以你永远都不可能实现pagehelper多表分页功能的。

因此我们需要手动给Total属性赋值,如下。public PageInfo findExamByUserIdAndPageAndPageSize(Long userId, int page, int pageSize) {

//放在之前就不会参与分页

List list3 = examMapper.selectByUserId(userId);

PageHelper.startPage(page, pageSize);

List list = examMapper.selectByUserId(userId);

List list2 = new ArrayList<>();

for (Exam exam :list){

QuestionType questionType = typeMapper.selectByPrimaryKey((long)exam.getType());

String typeName = questionType.getName();

exam.setTypeName(typeName);

}

PageInfo pageInfo = new PageInfo(list2);

pageInfo.setTotal(list3.size());

return pageInfo;

}

上面的更改中发现,我在PageHelper.startPage(page, pageSize);分页之前添加了list3,这是因为写在之前的话,list3查询的数据就是没有进行分页查询的,所以总条数就是原来的18条,然后我把list3.size()的条数setTotal赋值给了PageInfo对象,所以总条数就正常了。

一句话:pagehelper多表分页不了就是因为total总条数被改变成了pageSize了。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/javaweb/302.html

最后

以上就是迷路魔镜为你收集整理的pageinfo对合并list进行分页_pagehelper多表分页功能实现的全部内容,希望文章能够帮你解决pageinfo对合并list进行分页_pagehelper多表分页功能实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部