From f6b22c1da7867ee6a28400479f44ce145c0083ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E5=B0=8F=E5=A2=A8?= Date: Mon, 17 Feb 2025 16:36:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E9=85=8D=E7=BD=AE=20?= =?UTF-8?q?entity=20=E7=B1=BB=20lombok=20=E6=B3=A8=E8=A7=A3=E7=94=9F?= =?UTF-8?q?=E6=88=90=20(@NoArgsConstructor,=20@AllArgsConstructor)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/others/codegen.md | 2 + .../codegen/config/EntityConfig.java | 40 +++++++++++++++++++ .../codegen/config/GlobalConfig.java | 28 +++++++++++++ .../generator/impl/EntityGenerator.java | 4 +- .../templates/enjoy/entityOrBase.tpl | 8 ++++ .../templates/enjoy/entityWithBase.tpl | 8 ++++ 6 files changed, 88 insertions(+), 2 deletions(-) diff --git a/docs/zh/others/codegen.md b/docs/zh/others/codegen.md index 1c113927..975fea65 100644 --- a/docs/zh/others/codegen.md +++ b/docs/zh/others/codegen.md @@ -306,6 +306,8 @@ globalConfig.getTemplateConfig() | setEntityBaseOverwriteEnable(boolean) | 生成Base类时是否覆盖之前生成的文件 | false | | setImplInterfaces(Class[]) | Entity 默认实现的接口 | Serializable.class | | setWithLombok(boolean) | Entity 是否使用 Lombok 注解 | false | +| lombokNoArgsConstructorEnable(boolean) | 当开启 Lombok 注解且不使用 Active Record 时,是否生成 Entity @NoArgsConstructor 注解 | true | +| lombokAllArgsConstructorEnable(boolean) | 当开启 Lombok 注解且不使用 Active Record 时,是否生成 Entity @AllArgsConstructor 注解 | true | | setWithSwagger(boolean) | Entity 是否使用 Swagger 注解 | false | | setSwaggerVersion(EntityConfig.SwaggerVersion) | Swagger 注解版本 | SwaggerVersion.FOX | | setWithActiveRecord(boolean) | 是否生成 Active Record 模式的 Entity | false | diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java index 853e8e90..f08017ee 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java @@ -75,6 +75,16 @@ public class EntityConfig implements Serializable { */ private boolean withLombok; + /** + * 当开启 Lombok 注解且不使用 Active Record 时,是否生成 Entity @NoArgsConstructor 注解。 + */ + private boolean lombokNoArgsConstructorEnable = true; + + /** + * 当开启 Lombok 注解且不使用 Active Record 时,是否生成 Entity @AllArgsConstructor 注解。 + */ + private boolean lombokAllArgsConstructorEnable = true; + /** * Entity 是否使用 Swagger 注解。 */ @@ -278,6 +288,36 @@ public class EntityConfig implements Serializable { return this; } + /** + * 当开启 Lombok 注解且不使用 Active Record 时,是否生成 Entity @NoArgsConstructor 注解。 + */ + public boolean isLombokNoArgsConstructorEnable() { + return lombokNoArgsConstructorEnable; + } + + /** + * 设置当开启 Lombok 注解且不使用 Active Record 时,是否生成 Entity @NoArgsConstructor 注解。 + */ + public EntityConfig setLombokNoArgsConstructorEnable(boolean lombokNoArgsConstructorEnable) { + this.lombokNoArgsConstructorEnable = lombokNoArgsConstructorEnable; + return this; + } + + /** + * 当开启 Lombok 注解且不使用 Active Record 时,是否生成 Entity @AllArgsConstructor 注解。 + */ + public boolean isLombokAllArgsConstructorEnable() { + return lombokAllArgsConstructorEnable; + } + + /** + * 设置当开启 Lombok 注解且不使用 Active Record 时,是否生成 Entity @AllArgsConstructor 注解。 + */ + public EntityConfig setLombokAllArgsConstructorEnable(boolean lombokAllArgsConstructorEnable) { + this.lombokAllArgsConstructorEnable = lombokAllArgsConstructorEnable; + return this; + } + /** * 是否启用 Swagger。 */ diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java index f1b55083..a22d0a1b 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java @@ -986,6 +986,34 @@ public class GlobalConfig implements Serializable { getEntityConfig().setWithLombok(entityWithLombok); } + /** + * @see EntityConfig#isLombokNoArgsConstructorEnable() + */ + public boolean isEntityLombokNoArgsConstructorEnable() { + return getEntityConfig().isLombokNoArgsConstructorEnable(); + } + + /** + * @see EntityConfig#setLombokNoArgsConstructorEnable(boolean) + */ + public EntityConfig setEntityLombokNoArgsConstructorEnable(boolean entityLombokNoArgsConstructorEnable) { + return getEntityConfig().setLombokNoArgsConstructorEnable(entityLombokNoArgsConstructorEnable); + } + + /** + * @see EntityConfig#isLombokAllArgsConstructorEnable() + */ + public boolean isEntityLombokAllArgsConstructorEnable() { + return getEntityConfig().isLombokAllArgsConstructorEnable(); + } + + /** + * @see EntityConfig#setLombokAllArgsConstructorEnable(boolean) + */ + public EntityConfig setEntityLombokAllArgsConstructorEnable(boolean entityLombokAllArgsConstructorEnable) { + return getEntityConfig().setLombokAllArgsConstructorEnable(entityLombokAllArgsConstructorEnable); + } + /** * @see EntityConfig#isWithSwagger() */ diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/EntityGenerator.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/EntityGenerator.java index df40b066..be86b0de 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/EntityGenerator.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/EntityGenerator.java @@ -83,7 +83,7 @@ public class EntityGenerator implements IGenerator { table.getColumns().removeIf(column -> globalConfig.getStrategyConfig().getIgnoreColumns().contains(column.getName().toLowerCase())); } - Map params = new HashMap<>(6); + Map params = new HashMap<>(7); params.put("table", table); params.put("entityPackageName", packageConfig.getEntityPackage()); params.put("entityConfig", entityConfig); @@ -147,7 +147,7 @@ public class EntityGenerator implements IGenerator { table.getColumns().removeIf(column -> globalConfig.getStrategyConfig().getIgnoreColumns().contains(column.getName().toLowerCase())); } - Map params = new HashMap<>(6); + Map params = new HashMap<>(); params.put("table", table); params.put("entityPackageName", baseEntityPackagePath.replace("/", ".")); params.put("entityClassName", baseEntityClassName); diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/entityOrBase.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/entityOrBase.tpl index 5a59cc09..c909401c 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/entityOrBase.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/entityOrBase.tpl @@ -30,10 +30,14 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; #else +#if(entityConfig.isLombokAllArgsConstructorEnable()) import lombok.AllArgsConstructor; +#end import lombok.Builder; import lombok.Data; +#if(entityConfig.isLombokNoArgsConstructorEnable()) import lombok.NoArgsConstructor; +#end #if(entityConfig.getSuperClass(table)) import lombok.EqualsAndHashCode; #end @@ -58,8 +62,12 @@ import lombok.EqualsAndHashCode; #else @Data @Builder +#if(entityConfig.isLombokNoArgsConstructorEnable()) @NoArgsConstructor +#end +#if(entityConfig.isLombokAllArgsConstructorEnable()) @AllArgsConstructor +#end #if(entityConfig.getSuperClass(table)) @EqualsAndHashCode(callSuper = true) #end diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/entityWithBase.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/entityWithBase.tpl index 544ae1c5..e18e021b 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/entityWithBase.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/entityWithBase.tpl @@ -26,12 +26,16 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; #else +#if(entityConfig.isLombokAllArgsConstructorEnable()) import lombok.AllArgsConstructor; +#end import lombok.Builder; import lombok.Data; +#if(entityConfig.isLombokNoArgsConstructorEnable()) import lombok.NoArgsConstructor; #end #end +#end #if(jdkVersion >= 14) import java.io.Serial; #end @@ -56,10 +60,14 @@ import java.io.Serial; #else @Data @Builder +#if(entityConfig.isLombokNoArgsConstructorEnable()) @NoArgsConstructor +#end +#if(entityConfig.isLombokAllArgsConstructorEnable()) @AllArgsConstructor #end #end +#end #if(withSwagger && swaggerVersion.getName() == "FOX") @ApiModel("#(table.getComment())") #end