Преглед изворни кода

删除MybatisConfiguration中GlobalConfig属性.

nieqiuqiu пре 5 година
родитељ
комит
2fe89a7e4a

+ 1 - 2
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.java

@@ -198,8 +198,7 @@ public class MybatisPlusAutoConfiguration implements InitializingBean {
             factory.setTypeEnumsPackage(this.properties.getTypeEnumsPackage());
         }
         // TODO 此处必为非 NULL
-        // config的优先级要大于properties
-        GlobalConfig globalConfig = factory.getConfiguration().hasGlobalConfig() ? factory.getConfiguration().getGlobalConfig() : this.properties.getGlobalConfig();
+        GlobalConfig globalConfig = this.properties.getGlobalConfig();
         // TODO 注入填充器
         if (this.applicationContext.getBeanNamesForType(MetaObjectHandler.class, false, false).length > 0) {
             MetaObjectHandler metaObjectHandler = this.applicationContext.getBean(MetaObjectHandler.class);

+ 2 - 17
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisConfiguration.java

@@ -15,13 +15,11 @@
  */
 package com.baomidou.mybatisplus.core;
 
-import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.executor.MybatisBatchExecutor;
 import com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor;
 import com.baomidou.mybatisplus.core.executor.MybatisReuseExecutor;
 import com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
-import lombok.Setter;
 import org.apache.ibatis.binding.MapperRegistry;
 import org.apache.ibatis.executor.Executor;
 import org.apache.ibatis.logging.Log;
@@ -48,21 +46,6 @@ public class MybatisConfiguration extends Configuration {
      */
     protected final MybatisMapperRegistry mybatisMapperRegistry = new MybatisMapperRegistry(this);
 
-    // TODO 自己的 GlobalConfig
-    @Setter
-    private GlobalConfig globalConfig;
-
-    public GlobalConfig getGlobalConfig(){
-        if(globalConfig == null){
-            globalConfig = GlobalConfigUtils.defaults();
-        }
-        return globalConfig;
-    }
-
-    public boolean hasGlobalConfig() {
-        return globalConfig != null;
-    }
-
     public MybatisConfiguration(Environment environment) {
         this();
         this.environment = environment;
@@ -75,6 +58,8 @@ public class MybatisConfiguration extends Configuration {
         super();
         this.mapUnderscoreToCamelCase = true;
         languageRegistry.setDefaultDriverClass(MybatisXMLLanguageDriver.class);
+        //兼容一下非spring应用
+        GlobalConfigUtils.addGlobalConfig(this, GlobalConfigUtils.defaults());
     }
 
     /**

+ 2 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisSqlSessionFactoryBuilder.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.incrementer.IdGenerator;
 import com.baomidou.mybatisplus.core.incrementer.SnowflakeGenerator;
 import com.baomidou.mybatisplus.core.injector.SqlRunnerInjector;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import org.apache.ibatis.exceptions.ExceptionFactory;
 import org.apache.ibatis.executor.ErrorContext;
@@ -81,7 +82,7 @@ public class MybatisSqlSessionFactoryBuilder extends SqlSessionFactoryBuilder {
     @Override
     public SqlSessionFactory build(Configuration config) {
         MybatisConfiguration configuration = (MybatisConfiguration) config;
-        GlobalConfig globalConfig = configuration.getGlobalConfig();
+        GlobalConfig globalConfig = GlobalConfigUtils.getGlobalConfig(configuration);
         if (null != globalConfig.getWorkerId() && null != globalConfig.getDatacenterId()) {
             IdGenerator idGenerator = new SnowflakeGenerator(globalConfig.getWorkerId(), globalConfig.getDatacenterId());
             globalConfig.registerIdGenerator(IdType.ASSIGN_ID, idGenerator);

+ 10 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/GlobalConfigUtils.java

@@ -16,7 +16,6 @@
 package com.baomidou.mybatisplus.core.toolkit;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.core.MybatisConfiguration;
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
@@ -26,8 +25,10 @@ import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
 import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.SqlSessionFactory;
 
+import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * Mybatis全局缓存工具类
@@ -37,6 +38,12 @@ import java.util.Set;
  */
 public class GlobalConfigUtils {
 
+    private static Map<Configuration, GlobalConfig> mybatisConfigurationGlobalConfigMap = new ConcurrentHashMap<>();
+
+    public static void addGlobalConfig(Configuration mybatisConfiguration, GlobalConfig globalConfig) {
+        mybatisConfigurationGlobalConfigMap.put(mybatisConfiguration, globalConfig);
+    }
+
     /**
      * 获取当前的SqlSessionFactory
      *
@@ -45,7 +52,7 @@ public class GlobalConfigUtils {
     public static SqlSessionFactory currentSessionFactory(Class<?> clazz) {
         TableInfo tableInfo = TableInfoHelper.getTableInfo(clazz);
         Assert.notNull(tableInfo, ClassUtils.getUserClass(clazz).getName() + " Not Found TableInfoCache.");
-        return tableInfo.getConfiguration().getGlobalConfig().getSqlSessionFactory();
+        return mybatisConfigurationGlobalConfigMap.get(tableInfo.getConfiguration()).getSqlSessionFactory();
     }
 
     /**
@@ -63,7 +70,7 @@ public class GlobalConfigUtils {
      */
     public static GlobalConfig getGlobalConfig(Configuration configuration) {
         Assert.notNull(configuration, "Error: You need Initialize MybatisConfiguration !");
-        return ((MybatisConfiguration) configuration).getGlobalConfig();
+        return mybatisConfigurationGlobalConfigMap.get(configuration);
     }
 
     public static IKeyGenerator getKeyGenerator(Configuration configuration) {

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/spring/MybatisSqlSessionFactoryBean.java

@@ -470,7 +470,7 @@ public class MybatisSqlSessionFactoryBean implements FactoryBean<SqlSessionFacto
         this.globalConfig.setDbConfig(Optional.ofNullable(this.globalConfig.getDbConfig()).orElseGet(GlobalConfig.DbConfig::new));
 
         // TODO 初始化 id-work 以及 打印骚东西
-        targetConfiguration.setGlobalConfig(this.globalConfig);
+        GlobalConfigUtils.addGlobalConfig(targetConfiguration, this.globalConfig);
 
         // TODO 自定义枚举类扫描处理
         if (hasLength(this.typeEnumsPackage)) {