瀏覽代碼

[优化] GlobalConfig 加入 enableSqlRunner 属性控制是否注入 SqlRunner ,默认 false

miemie 6 年之前
父節點
當前提交
e97edf4579

+ 5 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisConfiguration.java

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.core;
 
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.core.injector.SqlRunnerInjector;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import org.apache.ibatis.binding.MapperRegistry;
 import org.apache.ibatis.logging.Log;
@@ -64,6 +65,9 @@ public class MybatisConfiguration extends Configuration {
             && null != globalConfig.getDatacenterId()) {
             IdWorker.initSequence(globalConfig.getWorkerId(), globalConfig.getDatacenterId());
         }
+        if (globalConfig.isEnableSqlRunner()) {
+            new SqlRunnerInjector().inject(this);
+        }
         // 打印 Banner
         if (globalConfig.isBanner()) {
             System.out.println(" _ _   |_  _ _|_. ___ _ |    _ ");
@@ -140,7 +144,7 @@ public class MybatisConfiguration extends Configuration {
     public boolean hasMapper(Class<?> type) {
         return mybatisMapperRegistry.hasMapper(type);
     }
-    
+
     /**
      * 指定动态SQL生成的默认语言
      *

+ 4 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/config/GlobalConfig.java

@@ -60,6 +60,10 @@ public class GlobalConfig implements Serializable {
      * 数据标识 ID 部分
      */
     private Long datacenterId;
+    /**
+     * 是否初始化 SqlRunner
+     */
+    private boolean enableSqlRunner = false;
     /**
      * 数据库相关配置
      */

+ 10 - 11
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractSqlInjector.java

@@ -15,22 +15,21 @@
  */
 package com.baomidou.mybatisplus.core.injector;
 
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.lang.reflect.WildcardType;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.ibatis.builder.MapperBuilderAssistant;
-import org.apache.ibatis.session.Configuration;
-
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.parser.SqlParserHelper;
 import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
 import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
+import org.apache.ibatis.builder.MapperBuilderAssistant;
+import org.apache.ibatis.session.Configuration;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.lang.reflect.WildcardType;
+import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -66,7 +65,7 @@ public abstract class AbstractSqlInjector implements ISqlInjector {
 
     @Override
     public void injectSqlRunner(Configuration configuration) {
-        new SqlRunnerInjector().inject(configuration);
+        // do nothing
     }
 
     /**

+ 3 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/ISqlInjector.java

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.core.injector;
 
 import com.baomidou.mybatisplus.core.assist.ISqlRunner;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.session.Configuration;
 
@@ -40,6 +41,8 @@ public interface ISqlInjector {
      *
      * @param configuration 全局配置
      * @see ISqlRunner
+     * @deprecated 请使用 {@link GlobalConfig#enableSqlRunner} 属性来控制是否注入 SqlRunner
      */
+    @Deprecated
     void injectSqlRunner(Configuration configuration);
 }

+ 16 - 17
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/config/MybatisPlusConfig.java

@@ -15,11 +15,18 @@
  */
 package com.baomidou.mybatisplus.test.h2.config;
 
-import javax.sql.DataSource;
-
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.parser.AbstractJsqlParser;
 import com.baomidou.mybatisplus.core.parser.ISqlParser;
+import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
+import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.SqlExplainInterceptor;
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import com.baomidou.mybatisplus.test.h2.H2MetaObjectHandler;
 import net.sf.jsqlparser.statement.delete.Delete;
 import net.sf.jsqlparser.statement.insert.Insert;
 import net.sf.jsqlparser.statement.select.SelectBody;
@@ -33,16 +40,7 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.io.ResourceLoader;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.core.MybatisConfiguration;
-import com.baomidou.mybatisplus.core.config.GlobalConfig;
-import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
-import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
-import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
-import com.baomidou.mybatisplus.test.h2.H2MetaObjectHandler;
-
+import javax.sql.DataSource;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -57,7 +55,7 @@ import java.util.List;
 public class MybatisPlusConfig {
 
     @Bean("mybatisSqlSession")
-    public SqlSessionFactory sqlSessionFactory(DataSource dataSource, ResourceLoader resourceLoader, GlobalConfig globalConfiguration) throws Exception {
+    public SqlSessionFactory sqlSessionFactory(DataSource dataSource, ResourceLoader resourceLoader, GlobalConfig globalConfig) throws Exception {
         MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
         sqlSessionFactory.setDataSource(dataSource);
 //        sqlSessionFactory.setConfigLocation(resourceLoader.getResource("classpath:mybatis-config-object-factory.xml"));
@@ -105,8 +103,8 @@ public class MybatisPlusConfig {
             sqlExplainInterceptor,
             new PerformanceInterceptor()
         });
-        globalConfiguration.setMetaObjectHandler(new H2MetaObjectHandler());
-        sqlSessionFactory.setGlobalConfig(globalConfiguration);
+        globalConfig.setMetaObjectHandler(new H2MetaObjectHandler());
+        sqlSessionFactory.setGlobalConfig(globalConfig);
         sqlSessionFactory.setTypeEnumsPackage("com.baomidou.mybatisplus.test.h2.enums");
         return sqlSessionFactory.getObject();
     }
@@ -114,8 +112,9 @@ public class MybatisPlusConfig {
     @Bean
     public GlobalConfig globalConfiguration() {
         GlobalConfig conf = new GlobalConfig();
-        conf.setSqlInjector(new LogicSqlInjector());
-        conf.setDbConfig(new GlobalConfig.DbConfig()
+        conf.setSqlInjector(new LogicSqlInjector())
+            .setEnableSqlRunner(true)
+            .setDbConfig(new GlobalConfig.DbConfig()
             .setLogicDeleteValue("1")
             .setLogicNotDeleteValue("0")
             .setIdType(IdType.ID_WORKER));