|
@@ -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));
|
|
|
}
|
|
|
}
|