Эх сурвалжийг харах

修复动态数据源获取schema异常问题

Woody 1 сар өмнө
parent
commit
f3a2d7b439

+ 4 - 1
framework-database/src/main/java/com/chelvc/framework/database/interceptor/DynamicDataSourceMybatisPlusInterceptor.java

@@ -7,6 +7,7 @@ import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourcePrope
 import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
 import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.chelvc.framework.common.util.ObjectUtils;
 import com.chelvc.framework.database.util.SQLUtils;
 import com.google.common.collect.Maps;
 import lombok.NonNull;
@@ -48,12 +49,14 @@ import org.springframework.stereotype.Component;
 })
 @ConditionalOnClass(DynamicDataSourceAutoConfiguration.class)
 public class DynamicDataSourceMybatisPlusInterceptor extends CustomizeMybatisPlusInterceptor {
+    private final String primary;
     private final Map<String, String> schemas;
 
     public DynamicDataSourceMybatisPlusInterceptor(@NonNull ApplicationContext applicationContext) {
         super(applicationContext);
 
         DynamicDataSourceProperties properties = applicationContext.getBean(DynamicDataSourceProperties.class);
+        this.primary = properties.getPrimary();
         Map<String, DataSourceProperty> sources = properties.getDatasource();
         this.schemas = Maps.newHashMapWithExpectedSize(sources.size());
         sources.forEach((key, source) -> this.schemas.put(key, SQLUtils.getSchema(source.getUrl())));
@@ -61,6 +64,6 @@ public class DynamicDataSourceMybatisPlusInterceptor extends CustomizeMybatisPlu
 
     @Override
     protected String getSchema() {
-        return this.schemas.get(DynamicDataSourceContextHolder.peek());
+        return this.schemas.get(ObjectUtils.ifNull(DynamicDataSourceContextHolder.peek(), this.primary));
     }
 }