浏览代码

优化生成代码执行性能 github issues/219

= 7 年之前
父节点
当前提交
f28a0b6101

+ 19 - 8
mybatis-plus-generate/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java

@@ -362,15 +362,18 @@ public class ConfigBuilder {
     }
     }
 
 
     /**
     /**
+     * <p>
      * 检查是否有
      * 检查是否有
-     *     {@link com.baomidou.mybatisplus.annotations.TableId}
-     *  {@link com.baomidou.mybatisplus.annotations.TableField}
-     *  注解
+     * {@link com.baomidou.mybatisplus.annotations.TableId}
+     * {@link com.baomidou.mybatisplus.annotations.TableField}
+     * 注解
+     * </p>
+     *
      * @param config
      * @param config
      * @param tableInfo
      * @param tableInfo
      * @param fieldPrefix
      * @param fieldPrefix
      */
      */
-    private void checkTableIdTableFieldAnnotation(StrategyConfig config, TableInfo tableInfo, String[] fieldPrefix){
+    private void checkTableIdTableFieldAnnotation(StrategyConfig config, TableInfo tableInfo, String[] fieldPrefix) {
         boolean importTableFieldAnnotaion = false;
         boolean importTableFieldAnnotaion = false;
         boolean importTableIdAnnotaion = false;
         boolean importTableIdAnnotaion = false;
         if (config.isEntityTableFieldAnnotationEnable()) {
         if (config.isEntityTableFieldAnnotationEnable()) {
@@ -396,8 +399,8 @@ public class ConfigBuilder {
         if (importTableIdAnnotaion) {
         if (importTableIdAnnotaion) {
             tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotations.TableId.class.getCanonicalName());
             tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotations.TableId.class.getCanonicalName());
         }
         }
-        if(globalConfig.getIdType()!=null){
-            if(!importTableIdAnnotaion){
+        if (globalConfig.getIdType() != null) {
+            if (!importTableIdAnnotaion) {
                 tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotations.TableId.class.getCanonicalName());
                 tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotations.TableId.class.getCanonicalName());
             }
             }
             tableInfo.getImportPackages().add(com.baomidou.mybatisplus.enums.IdType.class.getCanonicalName());
             tableInfo.getImportPackages().add(com.baomidou.mybatisplus.enums.IdType.class.getCanonicalName());
@@ -465,7 +468,7 @@ public class ConfigBuilder {
                     if (isInclude) {
                     if (isInclude) {
                         for (String includeTab : config.getInclude()) {
                         for (String includeTab : config.getInclude()) {
                             if (includeTab.equalsIgnoreCase(tableName)) {
                             if (includeTab.equalsIgnoreCase(tableName)) {
-                                includeTableList.add(tableInfo);
+                                includeTableList.add(this.convertTableFields(tableInfo, strategy));
                             } else {
                             } else {
                                 notExistTables.add(includeTab);
                                 notExistTables.add(includeTab);
                             }
                             }
@@ -479,7 +482,7 @@ public class ConfigBuilder {
                             }
                             }
                         }
                         }
                     }
                     }
-                    tableList.add(this.convertTableFields(tableInfo, strategy));
+                    tableList.add(tableInfo);
                 } else {
                 } else {
                     System.err.println("当前数据库为空!!!");
                     System.err.println("当前数据库为空!!!");
                 }
                 }
@@ -501,6 +504,12 @@ public class ConfigBuilder {
             if (!isInclude && !isExclude) {
             if (!isInclude && !isExclude) {
                 includeTableList = tableList;
                 includeTableList = tableList;
             }
             }
+            /**
+             * 性能优化,只处理需执行表字段 github issues/219
+             */
+            for (TableInfo ti : includeTableList) {
+                this.convertTableFields(ti, strategy);
+            }
         } catch (SQLException e) {
         } catch (SQLException e) {
             e.printStackTrace();
             e.printStackTrace();
         } finally {
         } finally {
@@ -692,7 +701,9 @@ public class ConfigBuilder {
     }
     }
 
 
     /**
     /**
+     * <p>
      * 获取当前的SQL类型
      * 获取当前的SQL类型
+     * </p>
      *
      *
      * @return DB类型
      * @return DB类型
      */
      */

+ 2 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/plugins/SqlParserHandler.java

@@ -48,7 +48,8 @@ public abstract class SqlParserHandler {
             }
             }
             // SQL 解析
             // SQL 解析
             if (CollectionUtils.isNotEmpty(this.sqlParserList)) {
             if (CollectionUtils.isNotEmpty(this.sqlParserList)) {
-                int flag = 0;// 标记是否修改过 SQL
+                // 标记是否修改过 SQL
+                int flag = 0;
                 String originalSql = (String) metaObject.getValue(PluginUtils.DELEGATE_BOUNDSQL_SQL);
                 String originalSql = (String) metaObject.getValue(PluginUtils.DELEGATE_BOUNDSQL_SQL);
                 for (ISqlParser sqlParser : this.sqlParserList) {
                 for (ISqlParser sqlParser : this.sqlParserList) {
                     SqlInfo sqlInfo = sqlParser.optimizeSql(metaObject, originalSql);
                     SqlInfo sqlInfo = sqlParser.optimizeSql(metaObject, originalSql);