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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
PageHelper 是一个 MyBatis 分页插件,可以帮助开发者在 MyBatis 中方便地实现分页功能。而 pagehelper-spring-boot-starter 是一个 PageHelper 在 Spring Boot 中的集成,使用起来非常方便。以下是使用 pagehelper-spring-boot-starter 实现分页的步骤: 1. 引入依赖 在 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency> ``` 2. 配置 PageHelper 在 application.properties 文件中添加以下配置: ``` # 分页插件配置 pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql ``` 其中,helperDialect 为数据库方言,reasonable 为是否开启合理化分页,supportMethodsArguments 为是否支持 Mapper 方法参数为 Page 类型,params 为分页参数映射。 3. 使用分页 在 Mapper 接口的方法中添加 Page 参数,即可实现分页查询: ``` List<User> getUsers(@Param("name") String name, Page<User> page); ``` 在 Service 层中调用该方法,并传入 Page 参数即可实现分页查询: ``` Page<User> page = PageHelper.startPage(pageNum, pageSize); List<User> users = userMapper.getUsers(name, page); ``` 其中,pageNum 和 pageSize 分别为当前页码和每页显示数量。PageHelper.startPage 方法会自动拦截下一次查询,并将查询转为分页查询查询结果会封装在 Page 对象中,可以通过该对象获取分页信息和查询结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值