PageHelper使用问题--查询数据出现两遍

        使用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操作,画蛇添足导致重复。


版权声明:本文为Deschampszzzz原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。