| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package cn.tr.plugin.mybatis;
- import cn.tr.plugin.mybatis.config.filter.DruidAdRemoveFilter;
- import cn.tr.plugin.mybatis.config.handler.CreateAndUpdateMetaObjectHandler;
- import cn.tr.plugin.mybatis.config.logic.PteromysSqlInjector;
- import cn.tr.plugin.mybatis.config.page.PageConfig;
- import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
- import com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties;
- import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
- import com.baomidou.mybatisplus.core.injector.ISqlInjector;
- import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
- import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
- import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
- import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
- import java.util.*;
- import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
- import com.github.pagehelper.PageInterceptor;
- import org.apache.ibatis.plugin.Interceptor;
- import org.springframework.beans.BeansException;
- import org.springframework.beans.factory.config.BeanPostProcessor;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
- import org.springframework.boot.web.servlet.FilterRegistrationBean;
- import org.springframework.context.annotation.Bean;
- /**
- * @ClassName : TrMybatisAutoConfiguration
- * @Description :
- * @Author : LF
- * @Date: 2023年02月21日
- */
- public class TrMybatisAutoConfiguration implements BeanPostProcessor {
- @Override
- public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
- return bean;
- }
- @Bean
- public ISqlInjector sqlInjector(){
- return new PteromysSqlInjector();
- }
- @Bean
- public PageConfig pageConfig(){
- return new PageConfig();
- }
- /**
- * 自动填充字段
- */
- @Bean
- public MetaObjectHandler createAndUpdateMetaObjectHandler(){
- return new CreateAndUpdateMetaObjectHandler();
- }
- /**
- * 创建 DruidAdRemoveFilter 过滤器,过滤 common.js 的广告
- */
- @Bean
- @ConditionalOnProperty(name = "spring.datasource.druid.web-stat-filter.enabled", havingValue = "true")
- public FilterRegistrationBean<DruidAdRemoveFilter> druidAdRemoveFilterFilter(DruidStatProperties properties) {
- // 获取 druid web 监控页面的参数
- DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();
- // 提取 common.js 的配置路径
- String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*";
- String commonJsPattern = pattern.replaceAll("\\*", "js/common.js");
- // 创建 DruidAdRemoveFilter Bean
- FilterRegistrationBean<DruidAdRemoveFilter> registrationBean = new FilterRegistrationBean<>();
- registrationBean.setFilter(new DruidAdRemoveFilter());
- registrationBean.addUrlPatterns(commonJsPattern);
- return registrationBean;
- }
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor(List<InnerInterceptor> innerInterceptorList) {
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- for (InnerInterceptor innerInterceptor : innerInterceptorList) {
- if(innerInterceptor.getClass()== TenantLineInnerInterceptor.class){
- List<InnerInterceptor> interceptors = new ArrayList<>(interceptor.getInterceptors());
- interceptors.add(0,innerInterceptor);
- interceptor.setInterceptors(interceptors);
- }else {
- interceptor.addInnerInterceptor(innerInterceptor);
- }
- }
- return interceptor;
- }
- /**
- * 分页插件
- */
- @Bean
- public Interceptor paginationInnerInterceptor() {
- return new PageInterceptor();
- }
- /**
- * 禁止全表更新
- */
- @Bean
- public InnerInterceptor blockAttackInnerInterceptor() {
- return new BlockAttackInnerInterceptor();
- }
- /**
- * 乐观锁插件
- */
- @Bean
- public InnerInterceptor optimisticLockerInnerInterceptor() {
- return new OptimisticLockerInnerInterceptor();
- }
- }
|