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

[优化] 优化启动速度

miemie пре 6 година
родитељ
комит
c1348060cd

+ 3 - 9
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractMethod.java

@@ -17,7 +17,6 @@ package com.baomidou.mybatisplus.core.injector;
 
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
-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;
@@ -46,17 +45,12 @@ public abstract class AbstractMethod implements Constants {
     /**
      * 注入自定义方法
      */
-    public void inject(MapperBuilderAssistant builderAssistant, Class<?> mapperClass, Class<?> modelClass) {
+    public void inject(MapperBuilderAssistant builderAssistant, Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
         this.configuration = builderAssistant.getConfiguration();
         this.builderAssistant = builderAssistant;
         this.languageDriver = configuration.getDefaultScriptingLanguageInstance();
-        if (null != modelClass) {
-            /**
-             * 注入自定义方法
-             */
-            TableInfo tableInfo = TableInfoHelper.initTableInfo(builderAssistant, modelClass);
-            injectMappedStatement(mapperClass, modelClass, tableInfo);
-        }
+        /* 注入自定义方法 */
+        injectMappedStatement(mapperClass, modelClass, tableInfo);
     }
 
     /**

+ 6 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractSqlInjector.java

@@ -15,10 +15,12 @@
  */
 package com.baomidou.mybatisplus.core.injector;
 
+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;
 
@@ -49,7 +51,10 @@ public abstract class AbstractSqlInjector implements ISqlInjector {
             Assert.notEmpty(methodList, "No effective injection method was found.");
             // 循环注入自定义方法
             Class<?> modelClass = extractModelClass(mapperClass);
-            methodList.forEach(m -> m.inject(builderAssistant, mapperClass, modelClass));
+            if (modelClass != null) {
+                TableInfo tableInfo = TableInfoHelper.initTableInfo(builderAssistant, modelClass);
+                methodList.forEach(m -> m.inject(builderAssistant, mapperClass, modelClass, tableInfo));
+            }
             mapperRegistryCache.add(className);
             /**
              * 初始化 SQL 解析

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableInfo.java

@@ -86,7 +86,7 @@ public class TableInfo implements Constants {
      */
     private List<TableFieldInfo> fieldList;
     /**
-     * 命名空间
+     * 命名空间 (对应的 mapper 接口的全类名)
      */
     private String currentNamespace;
     /**

+ 9 - 5
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/base/mapper/commons/CommonDataMapper.java

@@ -1,13 +1,13 @@
 package com.baomidou.mybatisplus.test.base.mapper.commons;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.ResultType;
-import org.apache.ibatis.annotations.Select;
-
 import com.baomidou.mybatisplus.annotation.SqlParser;
 import com.baomidou.mybatisplus.test.base.entity.CommonData;
 import com.baomidou.mybatisplus.test.base.mapper.MyBaseMapper;
+import org.apache.ibatis.annotations.ResultType;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.Optional;
 
 /**
  * @author miemie
@@ -19,4 +19,8 @@ public interface CommonDataMapper extends MyBaseMapper<CommonData> {
     @ResultType(CommonData.class)
     @Select("select * from common_data")
     List<CommonData> getAllNoTenant();
+
+    //    @ResultType(CommonData.class)
+    @Select("select * from common_data where id = #{ooxx}")
+    Optional<CommonData> getById(Long id);
 }

+ 3 - 3
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/MysqlTestDataMapperTest.java

@@ -50,6 +50,8 @@ import static java.util.stream.Collectors.toMap;
 @ContextConfiguration(locations = {"classpath:mysql/spring-test-mysql.xml"})
 public class MysqlTestDataMapperTest {
 
+    private final List<String> list = Arrays.asList("1", "2", "3");
+    private final Map<String, Object> map = list.parallelStream().collect(toMap(identity(), identity()));
     @Resource
     private CommonDataMapper commonMapper;
     @Resource
@@ -59,9 +61,6 @@ public class MysqlTestDataMapperTest {
     @Resource
     private ResultMapEntityMapper resultMapEntityMapper;
 
-    private final List<String> list = Arrays.asList("1", "2", "3");
-    private final Map<String, Object> map = list.parallelStream().collect(toMap(identity(), identity()));
-
     @BeforeClass
     public static void init() throws Exception {
         MysqlDb.initMysqlData();
@@ -195,6 +194,7 @@ public class MysqlTestDataMapperTest {
     public void d2_selectById() {
         long id = 6L;
         Assert.assertNotNull(commonMapper.selectById(id).getTestEnum());
+        Assert.assertTrue(commonMapper.getById(id).isPresent());
         Assert.assertNotNull(commonLogicMapper.selectById(id));
         Assert.assertNotNull(mysqlMapper.selectById(id));
         ResultMapEntity resultMapEntity = resultMapEntityMapper.selectById(id);