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的findLis
t中,第一次的查询语句:
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