栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

PageHelper分页踩坑:Pages总页数查出来始终为1,Total数有误.

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PageHelper分页踩坑:Pages总页数查出来始终为1,Total数有误.

记录SpringBoot+Mybatis+PageHelper分页踩坑:Pages总页数查出来始终为1,Total数有误

本人通过上面这位博主的文章解决了此方法,大家可以去支持一下。这里我再以我的方式讲一遍,可以让你们来理解两种不同的讲法,顺便增加一下这个坑的搜索度。我会通过代码加解释来说明。

//开启分页

PageHelper.startPage(page,limit);

List pojoList=pojoService.getPageList();

解释名词:page:当前的页面, limit :需要查询的条数。

开启分页后,他会把查询到的数据进行统计 ,然后除以 你的limit ,以得到你的页数。

比如你通过pojoService.getPageList() 查询到31条数据,但是你的limit为10 ,那么它就会把你的前端分成 4页也就是下面的 1、2、3、4  。 page就是你前端当前的页数, 比如你点第二页,那么page=2,假如你要展示10条数据。 那就是PageHelper.startPage(2,10); 也就是从第11条-20条数据展示到前端页面。(但是注意,他还是会统计查询到的所有数据31,所以你前端才会分页)

那么,坑来了,当你开启分页后,它会把你的limit和page 传递给你的第一个查询sql的操作。

当你再执行第二个查询sql的业务时,它就不会进行我上面说的分页操作了。可能会出现两种情况

1、前端直接把所有数据给展示了,limit根本没用。(很有可能是你执行了两个一样的sql查询。比如执行了两次 pojoService.getPageList()   。解决方法:直接弄一个变量存起来用就好了)

2、前端只展示limit个数据,page永远等于1  

原因:你执行了两个不同的返回结果。比如你通过

pojoService.getPageList() 这个返回的数据赋值给 List pojoList。然后将pojoList数据进行业务处理,变成PojoVo 数组(  List pojoVoList)后,然后这样

PageInfo  PojoVoListPageInfo = new PageInfo<>(pojoVoList);

return PojoVoListPageInfo;

这个时候PageInfo 的类型已经变了 ,从Pojo分页类型 变成PojoVo的分页类型了。我们是通过pojo得到总数的,现在又通过pojovo来分页返回,这样是不允许的。

下面,我用我的代码来解释。

//在这里donates 相当于 普通的类,也就是pojo, donateDto相当于拓展类,也就是pojoVO

 List donates = new ArrayList();
   
donates = donateMapper.getDonateInfos(); 

PageInfo  donatePageInfo = new PageInfo<>(donates);   //注意这里不要设置类型

        List donateList =  getDtoList(donates);

        donatePageInfo.setList(donateList);

        return donatePageInfo;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782323.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号