Переглянути джерело

支持toString方法控制(默认lombok开启ToString生成).

nieqiurong 3 місяців тому
батько
коміт
52d35a55f2

+ 9 - 4
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/DefaultTableAnnotationHandler.java

@@ -48,10 +48,15 @@ public class DefaultTableAnnotationHandler implements ITableAnnotationHandler {
             if (entity.isChain()) {
                 annotationAttributesList.add(new ClassAnnotationAttributes("@Accessors(chain = true)", "lombok.experimental.Accessors"));
             }
-            if (entity.isLombok() && entity.isDefaultLombok()) {
-                // 原先lombok默认只有这两个
-                annotationAttributesList.add(new ClassAnnotationAttributes("@Getter", "lombok.Getter"));
-                annotationAttributesList.add(new ClassAnnotationAttributes("@Setter", "lombok.Setter"));
+            if (entity.isLombok()) {
+                if (entity.isDefaultLombok()) {
+                    // 原先lombok默认只有这两个
+                    annotationAttributesList.add(new ClassAnnotationAttributes("@Getter", "lombok.Getter"));
+                    annotationAttributesList.add(new ClassAnnotationAttributes("@Setter", "lombok.Setter"));
+                    if (entity.isToString()) {
+                        annotationAttributesList.add(new ClassAnnotationAttributes("@ToString", "lombok.ToString"));
+                    }
+                }
             }
         }
         if (tableInfo.isConvert()) {

+ 39 - 8
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Entity.java

@@ -233,11 +233,24 @@ public class Entity implements ITemplate {
     private boolean generate = true;
 
     /**
-     * 默认lombok (兼容属性只有Getter和Setter)
+     * 默认lombok(低版本属性默认只有Getter和Setter)
+     * <p>当升级至3.5.10后,默认启用@ToString,如果不需要,可通过{@link Builder#toString(boolean)}关闭</p>
+     *
+     * @since 3.5.10
      */
     @Getter
     private boolean defaultLombok = true;
 
+    /**
+     * 是否生成ToString
+     * <p>默认情况下,非lombok下会自动生成ToString方法,但lombok下没有处理此</p>
+     * <p>支持控制toString方法是否生成</p>
+     *
+     * @since 3.5.10
+     */
+    @Getter
+    private boolean toString = true;
+
     /**
      * 实体类注解
      *
@@ -381,17 +394,17 @@ public class Entity implements ITemplate {
         data.put("superEntityClass", ClassUtils.getSimpleName(this.superClass));
         Set<String> importPackages = new HashSet<>(tableInfo.getImportPackages());
         GlobalConfig globalConfig = tableInfo.getGlobalConfig();
-        List<ClassAnnotationAttributes> classAnnotationAttributes = new ArrayList<>();
+        List<ClassAnnotationAttributes> classAnnotationAttributes = new ArrayList<>(this.getClassAnnotations());
         if (tableAnnotationHandler != null) {
             List<ClassAnnotationAttributes> classAnnotationAttributesList = tableAnnotationHandler.handle(tableInfo, this);
             if (classAnnotationAttributesList != null && !classAnnotationAttributesList.isEmpty()) {
-                classAnnotationAttributes = classAnnotationAttributesList;
-                classAnnotationAttributesList.forEach(attributes -> {
-                    attributes.handleDisplayName(tableInfo);
-                    importPackages.addAll(attributes.getImportPackages());
-                });
+                classAnnotationAttributes.addAll(classAnnotationAttributesList);
             }
         }
+        classAnnotationAttributes.forEach(attributes -> {
+            attributes.handleDisplayName(tableInfo);
+            importPackages.addAll(attributes.getImportPackages());
+        });
         if (tableFieldAnnotationHandler != null) {
             tableInfo.getFields().forEach(tableField -> {
                 List<AnnotationAttributes> annotationAttributes = tableFieldAnnotationHandler.handle(tableInfo, tableField);
@@ -406,6 +419,7 @@ public class Entity implements ITemplate {
         data.put("entityClassAnnotations", classAnnotationAttributes.stream()
             .sorted(Comparator.comparingInt(s -> s.getDisplayName().length())).collect(Collectors.toList()));
         data.put("importEntityPackages", importPackages.stream().sorted().collect(Collectors.toList()));
+        data.put("entityToString", this.toString);
         return data;
     }
 
@@ -485,6 +499,7 @@ public class Entity implements ITemplate {
 
         /**
          * 开启lombok模型 (默认添加Getter和Setter)
+         * <p>自3.5.10开始,默认添加ToString搭配,如果想关闭可通过{@link #toString(boolean)}关闭</p>
          *
          * @return this
          * @since 3.5.0
@@ -495,7 +510,10 @@ public class Entity implements ITemplate {
         }
 
         /**
-         * 开启lombok模型 (这里会把注解属性都加入进去,无论是否启用{@link GlobalConfig#isKotlin()})
+         * 开启lombok模型 (会把注解属性都加入进去,无论是否启用{@link GlobalConfig#isKotlin()})
+         * <p>注意如果通过此方法开启lombok模型,默认的lombok注解(get,set,toString)都将不会生成,请自行控制添加</p>
+         * <p>由{@link #toString(boolean)}控制的也会失效</p>
+         * 使用@Data示例: enableLombok(new ClassAnnotationAttributes("@Data","lombok.Data"))
          *
          * @param attributes 注解属性集合
          * @return this
@@ -791,6 +809,19 @@ public class Entity implements ITemplate {
             return this;
         }
 
+        /**
+         * 设置是否生成ToString方法
+         *
+         * @param toString 是否生成
+         * @return this
+         * @since 3.5.10
+         */
+        public Builder toString(boolean toString) {
+            this.entity.toString = toString;
+            return this;
+        }
+
+
         public Entity get() {
             String superClass = this.entity.superClass;
             if (StringUtils.isNotBlank(superClass)) {

+ 1 - 1
mybatis-plus-generator/src/main/resources/templates/entity.java.btl

@@ -94,7 +94,7 @@ public class ${entity} {
     <% } %>
     }
 <% } %>
-<% if(!entityLombokModel){ %>
+<% if(!entityLombokModel && entityToString){ %>
 
     @Override
     public String toString() {

+ 1 - 1
mybatis-plus-generator/src/main/resources/templates/entity.java.ej

@@ -90,7 +90,7 @@ public class #(entity) {
   #end
     }
 #end
-#if(!entityLombokModel)
+#if(!entityLombokModel && entityToString)
 
     @Override
     public String toString() {

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

@@ -87,7 +87,7 @@ public class ${entity} {
     </#if>
     }
 </#if>
-<#if !entityLombokModel>
+<#if !entityLombokModel && entityToString>
 
     @Override
     public String toString() {

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

@@ -90,7 +90,7 @@ public class ${entity} {
   #end
     }
 #end
-#if(!${entityLombokModel})
+#if(!${entityLombokModel} && ${entityToString})
 
     @Override
     public String toString() {

+ 1 - 1
mybatis-plus-generator/src/main/resources/templates/entity.kt.btl

@@ -68,7 +68,7 @@ class ${entity} {
     }
 
 <% } %>
-<% if(!entityLombokModel){ %>
+<% if(entityToString){ %>
     @Override
     override fun toString(): String  {
         return "${entity}{" +

+ 2 - 0
mybatis-plus-generator/src/main/resources/templates/entity.kt.ej

@@ -68,6 +68,7 @@ class #(entity) {
     }
 
 #end
+#if(entityToString)
     override fun toString(): String {
         return "#(entity){" +
 #for(field : table.fields)
@@ -79,4 +80,5 @@ class #(entity) {
 #end
         "}"
     }
+#end
 }

+ 2 - 0
mybatis-plus-generator/src/main/resources/templates/entity.kt.ftl

@@ -68,6 +68,7 @@ class ${entity} {
     }
 
 </#if>
+<#if entityToString>
     override fun toString(): String {
         return "${entity}{" +
 <#list table.fields as field>
@@ -79,4 +80,5 @@ class ${entity} {
 </#list>
         "}"
     }
+</#if>
 }

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

@@ -68,6 +68,7 @@ class ${entity} {
     }
 
 #end
+#if(${entityToString})
     override fun toString(): String {
         return "${entity}{" +
 #foreach($field in ${table.fields})
@@ -79,4 +80,5 @@ class ${entity} {
 #end
         "}"
     }
+#end
 }