Explorar o código

优化生成导入包

hubin %!s(int64=6) %!d(string=hai) anos
pai
achega
22d281c19d

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

@@ -340,7 +340,6 @@ public class ConfigBuilder {
      */
     private List<TableInfo> processTable(List<TableInfo> tableList, NamingStrategy strategy, StrategyConfig config) {
         String[] tablePrefix = config.getTablePrefix();
-        String[] fieldPrefix = config.getFieldPrefix();
         for (TableInfo tableInfo : tableList) {
             String entityName = NamingStrategy.capitalFirst(processName(tableInfo.getName(), strategy, tablePrefix));
             if (StringUtils.isNotEmpty(globalConfig.getEntityName())) {
@@ -373,56 +372,33 @@ public class ConfigBuilder {
             } else {
                 tableInfo.setControllerName(entityName + ConstVal.CONTROLLER);
             }
-            //强制开启字段注解
-            checkTableIdTableFieldAnnotation(config, tableInfo, fieldPrefix);
+            // 检测导入包
+            checkImportPackages(tableInfo);
         }
         return tableList;
     }
 
-
     /**
      * <p>
-     * 检查是否有
-     * {@link com.baomidou.mybatisplus.annotation.TableId}
-     * {@link com.baomidou.mybatisplus.annotation.TableField}
-     * 注解
+     * 检测导入包
      * </p>
      *
-     * @param config
      * @param tableInfo
-     * @param fieldPrefix
      */
-    private void checkTableIdTableFieldAnnotation(StrategyConfig config, TableInfo tableInfo, String[] fieldPrefix) {
-        boolean importTableFieldAnnotaion = false;
-        boolean importTableIdAnnotaion = false;
-        if (config.isEntityTableFieldAnnotationEnable()) {
-            for (TableField tf : tableInfo.getFields()) {
-                tf.setConvert(true);
-                importTableFieldAnnotaion = true;
-                importTableIdAnnotaion = true;
-            }
-        } else if (fieldPrefix != null && fieldPrefix.length != 0) {
-            for (TableField tf : tableInfo.getFields()) {
-                if (NamingStrategy.isPrefixContained(tf.getName(), fieldPrefix)) {
-                    if (tf.isKeyFlag()) {
-                        importTableIdAnnotaion = true;
-                    }
-                    tf.setConvert(true);
-                    importTableFieldAnnotaion = true;
-                }
-            }
+    private void checkImportPackages(TableInfo tableInfo) {
+        if (StringUtils.isNotEmpty(strategyConfig.getSuperEntityClass())) {
+            // 自定义父类
+            tableInfo.getImportPackages().add(strategyConfig.getSuperEntityClass());
+        } else if (globalConfig.isActiveRecord()) {
+            // 无父类开启 AR 模式
+            tableInfo.getImportPackages().add(com.baomidou.mybatisplus.extension.activerecord.Model.class.getCanonicalName());
         }
-        if (importTableFieldAnnotaion) {
-            tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());
-        }
-        if (importTableIdAnnotaion) {
-            tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.TableId.class.getCanonicalName());
-        }
-        if (globalConfig.getIdType() != null) {
-            if (!importTableIdAnnotaion) {
-                tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.TableId.class.getCanonicalName());
-            }
-            tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.IdType.class.getCanonicalName());
+        if (StringUtils.isNotEmpty(strategyConfig.getVersionFieldName())) {
+            tableInfo.getFields().forEach(f -> {
+                if (strategyConfig.getVersionFieldName().equals(f.getName())) {
+                    tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.Version.class.getCanonicalName());
+                }
+            });
         }
     }
 

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

@@ -15,8 +15,6 @@
  */
 package com.baomidou.mybatisplus.generator.config.po;
 
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -50,7 +48,7 @@ public class TableInfo {
     private List<TableField> fields;
     // 公共字段
     private List<TableField> commonFields;
-    private List<String> importPackages = new ArrayList<>();
+    private Set<String> importPackages = new HashSet<>();
     private String fieldNames;
 
     public boolean isConvert() {
@@ -161,33 +159,29 @@ public class TableInfo {
         if (CollectionUtils.isNotEmpty(fields)) {
             this.fields = fields;
             // 收集导入包信息
-            Set<String> pkgSet = new HashSet<>();
             for (TableField field : fields) {
                 if (null != field.getColumnType() && null != field.getColumnType().getPkg()) {
-                    pkgSet.add(field.getColumnType().getPkg());
+                    importPackages.add(field.getColumnType().getPkg());
                 }
                 if (field.isKeyFlag()) {
                     // 主键
                     if (field.isConvert() || field.isKeyIdentityFlag()) {
-                        pkgSet.add(com.baomidou.mybatisplus.annotation.TableId.class.getCanonicalName());
+                        importPackages.add(com.baomidou.mybatisplus.annotation.TableId.class.getCanonicalName());
                     }
                     // 自增
                     if (field.isKeyIdentityFlag()) {
-                        pkgSet.add(com.baomidou.mybatisplus.annotation.IdType.class.getCanonicalName());
+                        importPackages.add(com.baomidou.mybatisplus.annotation.IdType.class.getCanonicalName());
                     }
                 } else if (field.isConvert()) {
                     // 普通字段
-                    pkgSet.add(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());
+                    importPackages.add(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());
                 }
                 if (null != field.getFill()) {
                     // 填充字段
-                    pkgSet.add(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());
-                    pkgSet.add(com.baomidou.mybatisplus.annotation.FieldFill.class.getCanonicalName());
+                    importPackages.add(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());
+                    importPackages.add(com.baomidou.mybatisplus.annotation.FieldFill.class.getCanonicalName());
                 }
             }
-            if (!pkgSet.isEmpty()) {
-                this.importPackages = new ArrayList<>(Arrays.asList(pkgSet.toArray(new String[]{})));
-            }
         }
     }
 
@@ -199,7 +193,7 @@ public class TableInfo {
         this.commonFields = commonFields;
     }
 
-    public List<String> getImportPackages() {
+    public Set<String> getImportPackages() {
         return importPackages;
     }
 

+ 48 - 52
mybatis-plus-generator/src/main/resources/templates/entity.java.ftl

@@ -5,10 +5,6 @@ import ${pkg};
 </#list>
 <#if entityLombokModel>
 
-
-
-import com.baomidou.mybatisplus.annotation.Version;
-
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -24,11 +20,11 @@ import lombok.experimental.Accessors;
  */
 <#if entityLombokModel>
 @Data
-<#if superEntityClass??>
+    <#if superEntityClass??>
 @EqualsAndHashCode(callSuper = true)
-<#else>
+    <#else>
 @EqualsAndHashCode(callSuper = false)
-</#if>
+    </#if>
 @Accessors(chain = true)
 </#if>
 <#if table.convert>
@@ -45,85 +41,85 @@ public class ${entity} implements Serializable {
     private static final long serialVersionUID = 1L;
 <#-- ----------  BEGIN 字段循环遍历  ---------->
 <#list table.fields as field>
-<#if field.keyFlag>
-<#assign keyPropertyName="${field.propertyName}"/>
-</#if>
+    <#if field.keyFlag>
+        <#assign keyPropertyName="${field.propertyName}"/>
+    </#if>
 
-<#if field.comment!?length gt 0>
+    <#if field.comment!?length gt 0>
     /**
      * ${field.comment}
      */
-</#if>
-<#if field.keyFlag>
-<#-- 主键 -->
-<#if field.keyIdentityFlag>
+    </#if>
+    <#if field.keyFlag>
+    <#-- 主键 -->
+        <#if field.keyIdentityFlag>
     @TableId(value = "${field.name}", type = IdType.AUTO)
-<#elseif idType??>
+        <#elseif idType??>
     @TableId(value = "${field.name}", type = IdType.${idType})
-<#elseif field.convert>
+        <#elseif field.convert>
     @TableId("${field.name}")
-</#if>
-<#-- 普通字段 -->
-<#elseif field.fill??>
-<#-- -----   存在字段填充设置   ----->
-<#if field.convert>
+        </#if>
+    <#-- 普通字段 -->
+    <#elseif field.fill??>
+    <#-- -----   存在字段填充设置   ----->
+        <#if field.convert>
     @TableField(value = "${field.name}", fill = FieldFill.${field.fill})
-<#else>
+        <#else>
     @TableField(fill = FieldFill.${field.fill})
-</#if>
-<#elseif field.convert>
+        </#if>
+    <#elseif field.convert>
     @TableField("${field.name}")
-</#if>
+    </#if>
 <#-- 乐观锁注解 -->
-<#if (versionFieldName!"") == field.name>
+    <#if (versionFieldName!"") == field.name>
     @Version
-</#if>
+    </#if>
 <#-- 逻辑删除注解 -->
-<#if (logicDeleteFieldName!"") == field.name>
+    <#if (logicDeleteFieldName!"") == field.name>
     @TableLogic
-</#if>
+    </#if>
     private ${field.propertyType} ${field.propertyName};
 </#list>
 <#------------  END 字段循环遍历  ---------->
 
 <#if !entityLombokModel>
-<#list table.fields as field>
-<#if field.propertyType == "boolean">
-    <#assign getprefix="is"/>
-<#else>
-    <#assign getprefix="get"/>
-</#if>
+    <#list table.fields as field>
+        <#if field.propertyType == "boolean">
+            <#assign getprefix="is"/>
+        <#else>
+            <#assign getprefix="get"/>
+        </#if>
     public ${field.propertyType} ${getprefix}${field.capitalName}() {
         return ${field.propertyName};
     }
 
-<#if entityBuilderModel>
+        <#if entityBuilderModel>
     public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
-<#else>
+        <#else>
     public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
-</#if>
+        </#if>
         this.${field.propertyName} = ${field.propertyName};
-<#if entityBuilderModel>
+        <#if entityBuilderModel>
         return this;
-</#if>
+        </#if>
     }
-</#list>
+    </#list>
 </#if>
 
 <#if entityColumnConstant>
-<#list table.fields as field>
+    <#list table.fields as field>
     public static final String ${field.name?upper_case} = "${field.name}";
 
-</#list>
+    </#list>
 </#if>
 <#if activeRecord>
     @Override
     protected Serializable pkVal() {
-<#if keyPropertyName??>
+    <#if keyPropertyName??>
         return this.${keyPropertyName};
-<#else>
+    <#else>
         return null;
-</#if>
+    </#if>
     }
 
 </#if>
@@ -131,13 +127,13 @@ public class ${entity} implements Serializable {
     @Override
     public String toString() {
         return "${entity}{" +
-<#list table.fields as field>
-<#if field_index==0>
+    <#list table.fields as field>
+        <#if field_index==0>
         "${field.propertyName}=" + ${field.propertyName} +
-<#else>
+        <#else>
         ", ${field.propertyName}=" + ${field.propertyName} +
-</#if>
-</#list>
+        </#if>
+    </#list>
         "}";
     }
 </#if>

+ 0 - 2
mybatis-plus-generator/src/main/resources/templates/entity.java.vm

@@ -5,8 +5,6 @@ import ${pkg};
 #end
 #if(${entityLombokModel})
 
-import com.baomidou.mybatisplus.annotation.Version;
-
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;