MybatisAutoConfiguration.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package com.kxs.common.mybatis;
  2. import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  3. import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
  4. import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
  5. import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor;
  6. import com.kxs.common.mybatis.config.MybatisPlusMetaObjectHandler;
  7. import com.kxs.common.mybatis.handler.MonthTableNameHandler;
  8. import com.kxs.common.mybatis.plugins.SkyPaginationInnerInterceptor;
  9. import com.kxs.common.mybatis.resolver.SqlFilterArgumentResolver;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.web.method.support.HandlerMethodArgumentResolver;
  13. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  14. import java.util.List;
  15. /**
  16. * <p>
  17. * mybatis plus 统一配置
  18. *
  19. * @author 没秃顶的码农
  20. * @date 2023/10/28
  21. */
  22. @Configuration(proxyBeanMethods = false)
  23. public class MybatisAutoConfiguration implements WebMvcConfigurer {
  24. /**
  25. * SQL 过滤器避免SQL 注入
  26. * @param argumentResolvers
  27. */
  28. @Override
  29. public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
  30. argumentResolvers.add(new SqlFilterArgumentResolver());
  31. }
  32. /**
  33. * 1.分页插件, 对于单一数据库类型来说,都建议配置该值,避免每次分页都去抓取数据库类型
  34. * 2.针对 update 和 delete 语句 作用: 阻止恶意的全表更新删除
  35. * 3.动态分表
  36. */
  37. @Bean
  38. public MybatisPlusInterceptor mybatisPlusInterceptor() {
  39. MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  40. interceptor.addInnerInterceptor(new SkyPaginationInnerInterceptor());
  41. //针对 update 和 delete 语句 作用: 阻止恶意的全表更新删除
  42. interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
  43. //动态分表
  44. DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
  45. dynamicTableNameInnerInterceptor.setTableNameHandler(
  46. new MonthTableNameHandler("kxs_user_amount_log", "kxs_user_trade", "kxs_user_trade_before", "kxs_user_trade_after", "kxs_merchant_trade")
  47. );
  48. interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);
  49. return interceptor;
  50. }
  51. /**
  52. * 审计字段自动填充
  53. * @return {@link MetaObjectHandler}
  54. */
  55. @Bean
  56. public MybatisPlusMetaObjectHandler mybatisPlusMetaObjectHandler() {
  57. return new MybatisPlusMetaObjectHandler();
  58. }
  59. }