使用PageHelper插件获取数据总条数不对的问题的解决方案

简介: 使用PageHelper插件获取数据总条数不对的问题的解决方案

PageHelper 这个插件用了很多次了,今天使用的时候才发现中间有一个大坑,就是使用这个插件中间只能有一次查询的操作语句,不能再添加其它语句(两行代码之间不能再有其他代码)!

例如,我们一般都是这样进行查询:

//创建一个PageResult对象出来
PageResult<AdvertInfo> pageResult = new PageResult<>();
//开启分页,pageNum代表当前页数,pageSize代表每页总数
PageHelper.startPage(pageNum, pageSize);
//查询数据库的语句,pageHelper在这里做一次拦截器操作
List<AdvertInfo> advertList = advertMapper.getAdvertList(advertInfoParam);
//使用PageInfo包装结果
PageInfo<AdvertInfo> pageInfo = new PageInfo<>(advertList);

上述操作是这样的,但是如果我们需要将查询的List<AdvertInfo>转换成前端展示的 ViewObject 对象,那么我们想当然会在中间做一次操作:

PageHelper.startPage(pageNum, pageSize);
List<AdvertInfo> advertList = advertMapper.getAdvertList(advertInfoParam);
//将AdvertInfo某些字段要隐藏,不在前台展示,所以需要转换成前端需要的bean对象
List<AdvertInfoVO> AdvertInfoList = new ArrayList<>();
for (AdvertInfo info : pageInfo.getList()) {
    res.add(convertAdvertInfoToVO(info));
}
//然后再包装一下前端对象
PageInfo<AdvertInfoVO> pageInfo = new PageInfo<>(AdvertInfoList);

这样获取的pageInfo.getTotal()一直是当前的 pageSize总数,而不是查询的总条数。所以,我们最好不要在 pageHelper 两个语句中间插入其它语句,而是在后面做一些操作:

//分页查询
PageHelper.startPage(pageNum, pageSize);
List<AdvertInfo> advertList = advertMapper.getAdvertList(advertInfoParam);
PageInfo<AdvertInfo> pageInfo = new PageInfo<>(advertList);
//转换成前端VO
List<AdvertInfoVO> advertInfoList = new ArrayList<>();
for (AdvertInfoinfo : pageInfo.getList()) {
    advertInfoList.add(convertAdvertInfoToVO(info));
}
//那么这样就可以正确返回了!
return new LayuiTableResult(0, "查询成功", pageInfo.getTotal(), advertInfoList);;

 


相关文章
|
4月前
PageHelper分页插件拼接动态排序语句
PageHelper分页插件拼接动态排序语句
181 0
|
4月前
|
SQL Java 数据库连接
若依框架---PageHelper分页(三)
若依框架---PageHelper分页(三)
200 0
|
4月前
|
存储 自然语言处理 Java
SpringBoot集成ElasticSearch时分页排序查询时遇到的坑每次只能返回10条数据
SpringBoot集成ElasticSearch时分页排序查询时遇到的坑每次只能返回10条数据
184 0
|
4月前
pagehelper分页插件
pagehelper分页插件
53 0
|
11月前
|
前端开发
使用PageHelper插件获取数据总条数不对的问题的解决方案
使用PageHelper插件获取数据总条数不对的问题的解决方案
137 0
|
SQL Java 数据库连接
PageHelper分页插件的使用
PageHelper分页插件的使用
199 0
|
SQL 前端开发 数据库
Mybatis-Plus分页插件查询慢解决方案
Mybatis-Plus分页插件查询慢解决方案
986 0
|
前端开发 Java 数据库
pagination分页插件的getResult明明有数据,但是getTotal方法为0
pagination分页插件的getResult明明有数据,但是getTotal方法为0
245 0
|
SQL 前端开发
stream排序导致pageHelper分页失效处理
现有一查询会员上课记录的需求,要求按照上课时间进行倒序排列,考虑到后期数据量很多,使用逻辑层进行排序,但是前端小姐姐反应说查询的总记录数不正确.测试库中每页查询20条,实际所有数据总共37条,但是返回的总记录数竟然是20条,说明pageHelper分页失效.
stream排序导致pageHelper分页失效处理
|
数据库
pagehelper分页查询明明下一页没有数据了却还是返回了数据
pagehelper分页查询明明下一页没有数据了却还是返回了数据
453 0