自定义开关注解配置分页助手
使用 IPage 的话,记得一定要配置分页助手,尤其是在做微服务项目的时候,有可能这个服务配置了,但是另一个没配置,很容易遗漏。
因为给每个微服务都加配置确实太麻烦了,所以想到可以使用开关注解来做一个自动配置的操作。
就像你常用的那些开关注解一样:
@EnableAsync // 开启异步控制
@EnableCreateCacheAnnotation // jetcache启用缓存的主开关
我将mybatis-plus的配置类也做成了这样的东西。
-
首先在微服务的公共模块里定义一个配置类,如果不是微服务的话就放在自己的单体项目里就直接有效果了,不用单独做个开关注解。
package cn.sticki.common.tool.mybatisconfig; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.context.annotation.Bean; @Configuration public class MybatisPlusWebConfig { @Bean public MybatisPlusInterceptor mybatisPlusDefaultInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); // 配置分页助手 interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor()); // 阻止恶意的全表更新删除 return interceptor; } }
-
然后定义一个开关
@EnableMybatisPlusIPage
注解,注意这里的@Import(MybatisPlusWebConfig.class),就是把上面定义的配置类进行导入的:package cn.sticki.common.tool.mybatisconfig; import org.springframework.context.annotation.Import; import java.lang.annotation.*; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(MybatisPlusWebConfig.class) public @interface EnableMybatisPlusIPage { }
-
定义完毕后直接在其他需要的模块的启动类上进行配置即可,这里注意不是上面写代码的模块了,而是在其他模块上(其他需要该配置的模块):
package cn.sticki.user; import cn.sticki.common.tool.mybatisconfig.EnableMybatisPlusIPage; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableMybatisPlusIPage // 开启mybatis分页助手 public class UserServerApplication { public static void main(String[] args) { SpringApplication.run(UserServerApplication.class, args); } }
做到这一步已经有效果了,随后进行测试即可。
PS:如果不确定是否配置成功的话,可以在第一步的 mybatisPlusDefaultInterceptor
里面加上一句输出,然后再启动程序。这样的话,启动程序的时候是可以在控制台看到这句输出的。