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

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

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

//开启分页

PageHelper.startPage(page,limit);

List<Pojo> 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<Pojo> pojoList。然后将pojoList数据进行业务处理,变成PojoVo 数组(  List<Pojo> pojoVoList)后,然后这样

PageInfo <PojoVo> PojoVoListPageInfo = new PageInfo<>(pojoVoList);

return PojoVoListPageInfo;

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

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

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

 List<Donate> donates = new ArrayList<Donate>();
   
donates = donateMapper.getDonateInfos(); 

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

        List<DonateDto> donateList =  getDtoList(donates);

        donatePageInfo.setList(donateList);

        return donatePageInfo;

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值