写这个的时候基本避开了前几篇中描述的错误,测试返回也是200。不过测试分页查询的时候,我仔细查看返回信息的时候发现了一个问题:

这个返回数据没有达到我的预期啊。分页返回 total:0、pages:0,明明有管理员数据但分页总数统计失效。那无疑就是page插件未生效了。

因为返回是200,所以控制台是没有报错信息的。

发现情况后我立即去检查了我的代码:

  • 故障现象:PageHelper 分页插件未生效,总条数total=0,能查出单页数据但是分页计数失效。
  • 根因:检查分页拦截器 Bean 的定义位置,发现写在 Controller 内部。
  • 原理:Spring 只会在启动类、@Configuration配置类中解析@Bean注解,Controller 不会实例化其中的 Bean,分页拦截器没有注入 Spring 容器,MyBatis 分页插件无法工作,无法统计总数据量。
  • 修复方案:把分页 Bean 配置迁移到 SpringBoot 启动类。

Spring 注解规则:Controller 不承载 Bean 注册,@Bean失效,插件未加载

这确实是我写代码的时候没注意,本人很多东西知识学习理解了但并不是很会运用,理解也不够深入。

此处贴以下page插件代码吧。

// Page插件 
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
    MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
    mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    return mybatisPlusInterceptor;
    }

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐