记一次使用PageHelper插件分页查询不生效的解决方法

开发中要用到分页工功能时,有个很好用的myBatis插件:
PageHelper

网上看到的引入步骤很简单,只需两步即可:

  1. 引入PageHelper相关依赖
<!-- 分页插件-->
 <dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>1.2.3</version>
 </dependency>
 
  <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.1.0</version>
  </dependency>
  1. 在需要分页的地方调用:
    注意:
    PageHelper.startPage(pageNum,pageSize);
    该代码会对下一个查询语句进行分页,故要分页的查询方法必须是该代码后的第一个查询方法。
//调用插件方法
PageHelper.startPage(pageNum,pageSize);
List list = xxxMapper.selectAll();
//此时的list即为已经分页处理后的集合
//要获取更多分页详细信息
PageInfo pageInfo = new PageInfo(list);
pageInfo.getPageNum(); 
pageInfo.getPageSize();
pageInfo.getTotal();

在第一个项目中用的很好,But在第二个项目里面,跟第一个的引入方式用法完全相同,但是查询的结果始终是全量的,就是说分页没有起到作用,于是乎,上网百度,网上找到的有如下几种情况:

  • jar包引入的不对
    有的说在SpringBoot2.0以上的版本,依赖引入方式不能只引入
  <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.1.0</version>
  </dependency>

还需要引入

<dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>1.2.3</version>
 </dependency>

我是两个包一起引入的,但是没有用。

  • PageHelper调用位置不对
    PageHelper.startPage(pageNum,pageSize);要和要分页的查询语句挨着且在查询语句之前。
    这点我满足了,可还是不行。
  • 数据源配置
    在使用SpringBoot时,我用的是自定义实例化多数据源SqlSessionFactoryBean,就需要在定义数据源的代码中做如下配置
   //mybatis分页
   PageHelper pageHelper = new PageHelper();
   Properties props = new Properties();
   props.setProperty("dialect", "mysql");
   props.setProperty("reasonable", "true");
   props.setProperty("supportMethodsArguments", "true");
   props.setProperty("returnPageInfo", "check");
   props.setProperty("params", "count=countSql");
   pageHelper.setProperties(props); //添加插件
   sqlSessionFactory.setPlugins(new Interceptor[]{pageHelper});

我的问题是通过这种方式解决的。

采坑记录:
之前引入PageHelper的版本过高导致代码:

    sqlSessionFactory.setPlugins(new Interceptor[]{pageHelper});

一直报如下类型转化异常:
在这里插入图片描述
后面改了4.多的版本解决了,后面又发现一种方式应该也可以,还没有尝试:

Properties properties = new Properties();
//properties.setProperty("helperDialect", "mysql");
 properties.setProperty("reasonable", "true");
 properties.setProperty("supportMethodsArguments", "true");
 properties.setProperty("pageSizeZero", "true");
 //pageHelper.setProperties(properties);
 PageInterceptor interceptor = new PageInterceptor();
 interceptor.setProperties(properties);
 sqlSessionFactoryBean.setPlugins(new Interceptor[]{interceptor});
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝涯浅浅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值