controller层的代码如下:
@GetMapping("/list")
public ModelAndView list(@RequestParam(value = "page",defaultValue = "1") Integer page,
@RequestParam(value = "pageSize",defaultValue = "1") Integer pageSize,
Map<String,Object> map){
PageHelper.startPage(page,pageSize);
PageInfo pageInfo = orderService.findList();
System.out.println(pageInfo);
}
打印出来的pageInfo如下:

但我的数据不止1条,为什么size=1,查询不到总数呢?
后来我参考了这篇文章:关于pageHelper无法查到总数踩到的坑
发现了是我Service层里的问题:
原代码:
@Override
public PageInfo findList() {
List<OrderMaster> orderMasterList = orderMasterMapper.findAll();
/*根据订单信息转化为OrderDTO的List*/
List<OrderDTO> orderDTOList = OrderMaster2OrderDTOConverter.convert(orderMasterList);
PageInfo pageInfo = new PageInfo(orderDTOList);
return pageInfo;
}
改过后的代码:
Controller层:
@GetMapping("/list")
public ModelAndView list(@RequestParam(value = "page",defaultValue = "1") Integer page,
@RequestParam(value = "pageSize",defaultValue = "1") Integer pageSize,
Map<String,Object> map){
PageHelper.startPage(page,pageSize);
PageInfo pageInfo = orderService.findList();
List<OrderDTO> orderDTOList = OrderMaster2OrderDTOConverter.convert(pageInfo.getList());
pageInfo.setList(orderDTOList);
}
Service层:
@Override
public PageInfo findList() {
List<OrderMaster> orderMasterList = orderMasterMapper.findAll();
PageInfo pageInfo = new PageInfo(orderMasterList);
return pageInfo;
}
在原来的代码中,service里PageHelper会对orderService.findList()起一个分页的作用,然后返回一个Page的相关信息。
也就是说,在Service的findList中,第一次的查询语句:
List<OrderMaster> orderMasterList = orderMasterMapper.findAll();
就是返回的一个page的相关信息,必须得用PageInfo来接收才能获取里面的数据。不可直接处理。
我原来的代码就是直接把它又转化为另一种对象了,所以造成了数据的缺失。改动后的代码是直接把转化前的对象当作创建PageInfo对象的参数(结果集合为orderDTOList)
PageInfo pageInfo = new PageInfo(orderMasterList);
这样pageInfo里面除了所需集合之外的数据都为正确的,此时再进行转换,将orderMasterList替换为orderDTOList,再赋值给pageInfo
List<OrderDTO> orderDTOList = OrderMaster2OrderDTOConverter.convert(pageInfo.getList());
pageInfo.setList(orderDTOList);
555真的找这个问题找了好久twt
在使用PageHelper进行分页查询时,遇到总数查询不到的问题。经过排查,问题出现在Service层,原本的代码中,PageHelper的查询结果被转换为另一种对象,导致数据丢失。修正方法是直接使用PageHelper的原始查询结果创建PageInfo对象,确保所有分页信息正确。通过调整Service层的处理方式,成功解决了查询总数缺失的bug。
3267

被折叠的 条评论
为什么被折叠?



