Explorar o código

优化代码生成器.

nieqiurong %!s(int64=4) %!d(string=hai) anos
pai
achega
1ea2629a12

+ 0 - 61
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java

@@ -15,16 +15,8 @@
  */
 package com.baomidou.mybatisplus.generator;
 
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.generator.config.*;
 import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
-import com.baomidou.mybatisplus.generator.config.po.TableField;
 import com.baomidou.mybatisplus.generator.config.po.TableInfo;
 import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine;
 import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
@@ -36,9 +28,7 @@ import lombok.experimental.Accessors;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.Serializable;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 生成文件
@@ -128,57 +118,6 @@ public class AutoGenerator {
             injectionConfig.initMap();
             config.setInjectionConfig(injectionConfig);
         }
-        /*
-         * 表信息列表
-         */
-        List<TableInfo> tableList = this.getAllTableInfoList(config);
-        for (TableInfo tableInfo : tableList) {
-            /* ---------- 添加导入包 ---------- */
-            if (config.getGlobalConfig().isActiveRecord()) {
-                // 开启 ActiveRecord 模式
-                tableInfo.setImportPackages(Model.class.getCanonicalName());
-            }
-            if (tableInfo.isConvert()) {
-                // 表注解
-                tableInfo.setImportPackages(TableName.class.getCanonicalName());
-            }
-            if (config.getStrategyConfig().getLogicDeleteFieldName() != null && tableInfo.isLogicDelete(config.getStrategyConfig().getLogicDeleteFieldName())) {
-                // 逻辑删除注解
-                tableInfo.setImportPackages(TableLogic.class.getCanonicalName());
-            }
-            if (StringUtils.isNotBlank(config.getStrategyConfig().getVersionFieldName())) {
-                // 乐观锁注解
-                tableInfo.setImportPackages(Version.class.getCanonicalName());
-            }
-            boolean importSerializable = true;
-            if (StringUtils.isNotBlank(config.getStrategyConfig().getSuperEntityClass())) {
-                // 父实体
-                tableInfo.setImportPackages(config.getStrategyConfig().getSuperEntityClass());
-                importSerializable = false;
-            }
-            if (config.getGlobalConfig().isActiveRecord()) {
-                importSerializable = true;
-            }
-            if (importSerializable) {
-                tableInfo.setImportPackages(Serializable.class.getCanonicalName());
-            }
-            // Boolean类型is前缀处理
-            if (config.getStrategyConfig().isEntityBooleanColumnRemoveIsPrefix()
-                && CollectionUtils.isNotEmpty(tableInfo.getFields())) {
-                List<TableField> tableFields = tableInfo.getFields().stream().filter(field -> "boolean".equalsIgnoreCase(field.getPropertyType()))
-                    .filter(field -> field.getPropertyName().startsWith("is")).collect(Collectors.toList());
-                tableFields.forEach(field -> {
-                    //主键为is的情况基本上是不存在的.
-                    if (field.isKeyFlag()) {
-                        tableInfo.setImportPackages(TableId.class.getCanonicalName());
-                    } else {
-                        tableInfo.setImportPackages(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());
-                    }
-                    field.setConvert(true);
-                    field.setPropertyName(StringUtils.removePrefixAfterPrefixToLower(field.getPropertyName(), 2));
-                });
-            }
-        }
         return config;
     }
 

+ 4 - 1
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/INameConvert.java

@@ -66,7 +66,10 @@ public interface INameConvert {
 
         @Override
         public String propertyNameConvert(TableField field) {
-            return processName(field.getName(), strategyConfig.getNaming(), strategyConfig.getTablePrefix());
+            String name = processName(field.getName(), strategyConfig.getNaming(), strategyConfig.getTablePrefix());
+            //TODO 暂时先放在这里调用,后面要改掉才行!!!!!
+            field.setPropertyName(strategyConfig, name);
+            return name;
         }
 
         private String processName(String name, NamingStrategy strategy, Set<String> prefix) {

+ 1 - 31
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java

@@ -160,40 +160,10 @@ public class ConfigBuilder {
             } else {
                 tableInfo.setControllerName(entityName + ConstVal.CONTROLLER);
             }
-            // 检测导入包
-            checkImportPackages(tableInfo);
+            tableInfo.importPackage(strategyConfig, globalConfig);
         }
     }
 
-    /**
-     * 检测导入包
-     *
-     * @param tableInfo ignore
-     */
-    private void checkImportPackages(TableInfo tableInfo) {
-        if (StringUtils.isNotBlank(strategyConfig.getSuperEntityClass())) {
-            // 自定义父类
-            tableInfo.getImportPackages().add(strategyConfig.getSuperEntityClass());
-        } else if (globalConfig.isActiveRecord()) {
-            // 无父类开启 AR 模式
-            tableInfo.getImportPackages().add(com.baomidou.mybatisplus.extension.activerecord.Model.class.getCanonicalName());
-        }
-        if (null != globalConfig.getIdType() && tableInfo.isHavePrimaryKey()) {
-            // 指定需要 IdType 场景
-            tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.IdType.class.getCanonicalName());
-            tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.TableId.class.getCanonicalName());
-        }
-        if (StringUtils.isNotBlank(strategyConfig.getVersionFieldName())
-            && CollectionUtils.isNotEmpty(tableInfo.getFields())) {
-            tableInfo.getFields().forEach(f -> {
-                if (strategyConfig.getVersionFieldName().equals(f.getName())) {
-                    tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.Version.class.getCanonicalName());
-                }
-            });
-        }
-    }
-
-
     /**
      * 获取所有的数据库表信息
      */

+ 6 - 1
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableField.java

@@ -89,6 +89,12 @@ public class TableField {
     }
 
     public TableField setPropertyName(StrategyConfig strategyConfig, String propertyName) {
+        //TODO 这个好像是苗老板写的,有空打死他吧.
+        if (strategyConfig.isEntityBooleanColumnRemoveIsPrefix()
+            && "boolean".equalsIgnoreCase(this.getPropertyType()) && this.getPropertyName().startsWith("is")) {
+            this.convert = true;
+            propertyName = StringUtils.removePrefixAfterPrefixToLower(this.getPropertyName(), 2);
+        }
         this.propertyName = propertyName;
         this.setConvert(strategyConfig);
         return this;
@@ -134,5 +140,4 @@ public class TableField {
         }
         return columnName;
     }
-
 }

+ 41 - 6
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableInfo.java

@@ -15,13 +15,17 @@
  */
 package com.baomidou.mybatisplus.generator.config.po;
 
+import java.io.Serializable;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.IntStream;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.generator.config.GlobalConfig;
 import com.baomidou.mybatisplus.generator.config.StrategyConfig;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 
@@ -124,12 +128,8 @@ public class TableInfo {
     }
 
     public TableInfo setImportPackages(String pkg) {
-        if (importPackages.contains(pkg)) {
-            return this;
-        } else {
-            importPackages.add(pkg);
-            return this;
-        }
+        importPackages.add(pkg);
+        return this;
     }
 
     /**
@@ -159,4 +159,39 @@ public class TableInfo {
         return fieldNames;
     }
 
+    public void importPackage(StrategyConfig strategyConfig, GlobalConfig globalConfig){
+        boolean importSerializable = true;
+        if (StringUtils.isNotBlank(strategyConfig.getSuperEntityClass())) {
+            // 自定义父类
+            importSerializable = false;
+            this.importPackages.add(strategyConfig.getSuperEntityClass());
+        } else {
+            if (globalConfig.isActiveRecord()) {
+                // 无父类开启 AR 模式
+                this.getImportPackages().add(com.baomidou.mybatisplus.extension.activerecord.Model.class.getCanonicalName());
+            }
+        }
+        if (importSerializable) {
+            this.setImportPackages(Serializable.class.getCanonicalName());
+        }
+        if (this.isConvert()) {
+            this.importPackages.add(TableName.class.getCanonicalName());
+        }
+        if (strategyConfig.getLogicDeleteFieldName() != null && this.isLogicDelete(strategyConfig.getLogicDeleteFieldName())) {
+            this.importPackages.add(TableLogic.class.getCanonicalName());
+        }
+        if (null != globalConfig.getIdType() && this.isHavePrimaryKey()) {
+            // 指定需要 IdType 场景
+            this.importPackages.add(com.baomidou.mybatisplus.annotation.IdType.class.getCanonicalName());
+            this.importPackages.add(com.baomidou.mybatisplus.annotation.TableId.class.getCanonicalName());
+        }
+        if (StringUtils.isNotBlank(strategyConfig.getVersionFieldName())
+            && CollectionUtils.isNotEmpty(this.getFields())) {
+            this.getFields().forEach(f -> {
+                if (strategyConfig.getVersionFieldName().equals(f.getName())) {
+                    this.importPackages.add(com.baomidou.mybatisplus.annotation.Version.class.getCanonicalName());
+                }
+            });
+        }
+    }
 }