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,完成分页。(第一种情况)先进行查询,再用PafeHelper对查询结果List分页,出现一次,多次刷新出现重复,暂时不知;(第二种情况)PageHelper开启分页后,对后面的第一条查询SQL起作用,又添加list操作,画蛇添足导致重复。

你可能感兴趣的:(java,mybatis)