日常开发-pageHelper分页失效

导读:本篇文章讲解 日常开发-pageHelper分页失效,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

前言

pageHelper是一款优秀的Mybatis分页插件,在项目中可以非常便利的使用,使开发效率得到很大的提升,但不支持一对多结果映射的分页查询,所以在平时的使用时,对于一对多分页会出现分页错误,这篇文章主要对pageHelper分页错误进行重现以及提出解决方案。

分析

mybatis进行一对多查询时,映射文件(mapper.xml)中的sql语句中使用的左连接,pageHelper会自动对这条左连接sql语句进行select count(0)的处理,并把结果作为分页结构的记录总数,然后自动将limit拼接到sql语句末尾进行分页,由于左连接查询时,连接条件on条件不唯一(即一对多)时,结果会产生笛卡尔积,所以经过pagehelper插件分页得到的记录总数和分页结果并不是预期的结果
前言转自:【菜鸟阿都】

错误原因

  • 第一种:
    依赖引入错误,
    我的错误依赖
<dependency>  
  <groupId>com.github.pagehelper</groupId>    
  <artifactId>pagehelper</artifactId>    
  <version>5.3.0</version>
</dependency>

尽量多尝试几个版本
修改正确依赖(这里尽量去maven仓库去用最新而稳定的版本maven仓库跳转

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

再者记得加配置文件


#pagehelper分页配置
pagehelper:
  helperDialect: mysql          #分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。
  reasonable: true              #分页合理化参数,默认值为false。
  supportMethodsArguments: true #支持通过 Mapper 接口参数来传递分页参数,默认值false
  params: count=countSql        #增加了该参数来配置参数映射,用于从对象中根据属性名取值。
  • 第二种:
    代码查询问题,可参考思否

在Controller的方法中

PageHelper.startPage(1,5);//从第一页开始,每页5条记录
以上代码后面需紧跟查询语句
List<Test> tests = testService.getAllTestsByTypeId(testTypeid);
PageInfo pageInfo = new PageInfo(tests,5);

当一个方法中有多个查询语句时,只有紧跟在PageHelper.starPage()方法后的查询结果才会分页。

缺少以上三步都会导致分页失效

  • 第三种:对于一对多的查询,最好使用标签子查询的方式,不然分页也会失败
    看一下一对多正确的使用姿势

  • 第四种:千万不要在每一页中的数据进行筛选或者添加操作,但是可以去对每页的对象进行属性的封装,千万不要去删除和添加每页的数据。

  • 总之:
    1、第二种错误就是在PageHelper.startPage(1,5)后紧跟的查询语句有效,后面再加查询语句就没有用

2、对分页的数据千万不要增加和删除,都把增加和删除这些操作多放在sql中去完成,这样就不会失效

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96227.html

(1)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!