package com.threeclear.mobilelaw.config;
import com.baomidou.dynamic.datasource.aop.DynamicDatasourceNamedInterceptor;
import com.baomidou.dynamic.datasource.processor.DsProcessor;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.aop.Advisor;
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
@Configuration
@MapperScan("xxx.dao")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
@Bean
public DynamicDatasourceNamedInterceptor dsPolluteAdvice(DsProcessor dsProcessor) {
DynamicDatasourceNamedInterceptor interceptor = new DynamicDatasourceNamedInterceptor(dsProcessor);
Map<String, String> patternMap = new HashMap<>();
patternMap.put("*", "test");
interceptor.addPatternMap(patternMap);
return interceptor;
}
@Bean
public DynamicDatasourceNamedInterceptor dsLawlibraryAdvice(DsProcessor dsProcessor) {
DynamicDatasourceNamedInterceptor interceptor = new DynamicDatasourceNamedInterceptor(dsProcessor);
Map<String, String> patternMap = new HashMap<>();
patternMap.put("*", "test");
interceptor.addPatternMap(patternMap);
return interceptor;
}
@Bean
public Advisor dsLawlibraryAdviceAdvisor(DynamicDatasourceNamedInterceptor dsLawlibraryAdvice) {
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression("execution (* xx..dao.*.*(..))");
return new DefaultPointcutAdvisor(pointcut, dsLawlibraryAdvice);
}
@Bean
public Advisor dsPolluteAdviceAdvisor(DynamicDatasourceNamedInterceptor dsPolluteAdvice) {
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression("execution (* xx..*(..))");
return new DefaultPointcutAdvisor(pointcut, dsPolluteAdvice);
}
}
mybatis plus aop配置动态切换数据源
最新推荐文章于 2024-07-22 14:23:26 发布