Просмотр исходного кода

初始化 SQL 解析 挪到 SqlInjector 里去

miemie 7 лет назад
Родитель
Сommit
26286331ad

+ 4 - 18
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractMethod.java

@@ -15,10 +15,11 @@
  */
 package com.baomidou.mybatisplus.core.injector;
 
-import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
-import com.baomidou.mybatisplus.core.parser.SqlParserHelper;
-import com.baomidou.mybatisplus.core.toolkit.*;
+import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
 import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.executor.keygen.KeyGenerator;
@@ -58,12 +59,6 @@ public abstract class AbstractMethod {
         this.languageDriver = configuration.getDefaultScriptingLanguageInstance();
         Class<?> modelClass = extractModelClass(mapperClass);
         if (null != modelClass) {
-            /**
-             * 初始化 SQL 解析
-             */
-            if (this.getGlobalConfig().isSqlParserCache()) {
-                SqlParserHelper.initSqlParserInfoCache(mapperClass);
-            }
             /**
              * 注入自定义方法
              */
@@ -269,15 +264,6 @@ public abstract class AbstractMethod {
             configuration.getDatabaseId(), languageDriver, null);
     }
 
-    /**
-     * <p>
-     * 全局配置
-     * </p>
-     */
-    protected GlobalConfig getGlobalConfig() {
-        return GlobalConfigUtils.getGlobalConfig(configuration);
-    }
-
     /**
      * 注入自定义 MappedStatement
      */

+ 7 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractSqlInjector.java

@@ -15,6 +15,7 @@
  */
 package com.baomidou.mybatisplus.core.injector;
 
+import com.baomidou.mybatisplus.core.parser.SqlParserHelper;
 import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import org.apache.ibatis.builder.MapperBuilderAssistant;
@@ -45,6 +46,12 @@ public abstract class AbstractSqlInjector implements ISqlInjector {
             methodList.forEach(m -> m.inject(builderAssistant, mapperClass));
             mapperRegistryCache.add(className);
         }
+        /**
+         * 初始化 SQL 解析
+         */
+        if (GlobalConfigUtils.getGlobalConfig(builderAssistant.getConfiguration()).isSqlParserCache()) {
+            SqlParserHelper.initSqlParserInfoCache(mapperClass);
+        }
     }
 
     @Override

+ 1 - 12
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/parser/SqlParserHelper.java

@@ -22,9 +22,7 @@ import org.apache.ibatis.reflection.MetaObject;
 
 import java.lang.reflect.Method;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentSkipListSet;
 
 /**
  * <p>
@@ -41,10 +39,6 @@ public class SqlParserHelper {
      * SQL 解析缓存
      */
     private static final Map<String, Boolean> SQL_PARSER_INFO_CACHE = new ConcurrentHashMap<>();
-    /**
-     * 缓存解析过的 mapperClass
-     */
-    private static final Set<String> CACHE_INIT_MAPPER = new ConcurrentSkipListSet<>();
 
 
     /**
@@ -55,19 +49,14 @@ public class SqlParserHelper {
      * @param mapperClass Mapper Class
      */
     public synchronized static void initSqlParserInfoCache(Class<?> mapperClass) {
-        String mapperClassName = mapperClass.getName();
-        if (CACHE_INIT_MAPPER.contains(mapperClassName)) {
-            return;
-        }
         Method[] methods = mapperClass.getDeclaredMethods();
         for (Method method : methods) {
             SqlParser sqlParser = method.getAnnotation(SqlParser.class);
             if (null != sqlParser) {
-                String sid = mapperClassName + StringPool.DOT + method.getName();
+                String sid = mapperClass.getName() + StringPool.DOT + method.getName();
                 SQL_PARSER_INFO_CACHE.put(sid, sqlParser.filter());
             }
         }
-        CACHE_INIT_MAPPER.add(mapperClassName);
     }