| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package com.lxq.common.mybatis;
- import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
- import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
- import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
- import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
- import com.lxq.common.mybatis.config.MybatisPlusMetaObjectHandler;
- import com.lxq.common.mybatis.encrypt.DecryptInterceptor;
- import com.lxq.common.mybatis.encrypt.EncryptInterceptor;
- import com.lxq.common.mybatis.encrypt.FieldEncryptProperties;
- import com.lxq.common.mybatis.encrypt.service.DefaultFieldEncryptService;
- import com.lxq.common.mybatis.encrypt.utils.FieldEncryptUtil;
- import com.lxq.common.mybatis.plugins.LxqPaginationInnerInterceptor;
- import com.lxq.common.mybatis.resolver.SqlFilterArgumentResolver;
- import org.springframework.boot.context.properties.EnableConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.method.support.HandlerMethodArgumentResolver;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
- import java.util.List;
- /**
- * <p>
- * mybatis plus 统一配置
- *
- * @author 没秃顶的码农
- * @date 2023/10/28
- */
- @Configuration(proxyBeanMethods = false)
- @EnableConfigurationProperties({FieldEncryptProperties.class})
- public class MybatisAutoConfiguration implements WebMvcConfigurer {
- /**
- * SQL 过滤器避免SQL 注入
- * @param argumentResolvers
- */
- @Override
- public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
- argumentResolvers.add(new SqlFilterArgumentResolver());
- }
- /**
- * 1.分页插件, 对于单一数据库类型来说,都建议配置该值,避免每次分页都去抓取数据库类型
- * 2.针对 update 和 delete 语句 作用: 阻止恶意的全表更新删除
- * 3.动态分表
- */
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor() {
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- //分页插件
- interceptor.addInnerInterceptor(new LxqPaginationInnerInterceptor());
- //针对 update 和 delete 语句 作用: 阻止恶意的全表更新删除
- interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
- //乐观锁
- interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
- return interceptor;
- }
- /**
- * 审计字段自动填充
- * @return {@link MetaObjectHandler}
- */
- @Bean
- public MybatisPlusMetaObjectHandler mybatisPlusMetaObjectHandler() {
- return new MybatisPlusMetaObjectHandler();
- }
- /**
- * 字段加解密拦截器
- */
- @Bean
- public DecryptInterceptor decryptInterceptor() {
- return new DecryptInterceptor();
- }
- /**
- * 字段加解密拦截器
- */
- @Bean
- public EncryptInterceptor encryptInterceptor() {
- return new EncryptInterceptor();
- }
- @Bean
- public DefaultFieldEncryptService fieldEncryptService(FieldEncryptProperties fieldEncryptProperties) {
- return new DefaultFieldEncryptService(fieldEncryptProperties);
- }
- @Bean
- public FieldEncryptUtil fieldEncryptUtil() {
- return new FieldEncryptUtil();
- }
- }
|