使用pageHelper对list进行分页,遇到了查询出来的数据刚开始正常一次,多次刷新后会出现两遍的情况,但是在Mysql中用SQL直接查询的结果是正常的一遍,不重复。
@Override
public PageableObject<InfoVO> queryByName(InfoRequest request) {
List<InfoVO> InfoVO = InfoMapper.findName(request.getName()).stream().distinct().collect(toList());
Page list = PageHelper.startPage(request.getPage(), request.getPageSize());
list.addAll(InfoVO);
list.setTotal(list.size());
return PageUtil.genPageableObject(list);
}
修改查询和使用pageHelper的顺序后,变成稳定出现两遍的错误😂😂
@Override
public PageableObject<InfoVO> queryByName(InfoRequest request) {
Page list = PageHelper.startPage(request.getPage(),request.getPageSize());
List<InfoVO> InfoVO = InfoMapper.findName(request.getName()).stream().distinct().collect(toList());
list.addAll(InfoVO);
list.setTotal(list.size());
return PageUtil.genPageableObject(list);
}
最后删去了list的addAll和setTotal解决了
@Override
public PageableObject<InfoVO> queryByName(InfoRequest request) {
Page list = PageHelper.startPage(request.getPage(),request.getPageSize());
List<InfoVO> InfoVO = InfoMapper.findName(request.getName()).stream().distinct().collect(toList());
return PageUtil.genPageableObject(list);
}
原因分析:
PageHelper利用了mybatis提供的拦截器,重新拼装分页SQL,完成分页。(第一种情况)先进行查询,再用PageHelper对查询结果List分页,出现一次,多次刷新出现重复,暂时不知;(第二种情况)PageHelper开启分页后,对后面的第一条查询SQL起作用,又添加list操作,画蛇添足导致重复。