Merge pull request #502 from coder-xiaomo/feat-lombokConstructorEnable

feat: 支持配置 entity 类 lombok 注解生成 (`@NoArgsConstructor`, `@AllArgsConstructor`)
This commit is contained in:
Michael Yang 2025-02-28 13:24:27 +08:00 committed by GitHub
commit b326a824b8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 88 additions and 2 deletions

View File

@ -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 |

View File

@ -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
*/

View File

@ -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()
*/

View File

@ -83,7 +83,7 @@ public class EntityGenerator implements IGenerator {
table.getColumns().removeIf(column -> globalConfig.getStrategyConfig().getIgnoreColumns().contains(column.getName().toLowerCase()));
}
Map<String, Object> params = new HashMap<>(6);
Map<String, Object> 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<String, Object> params = new HashMap<>(6);
Map<String, Object> params = new HashMap<>();
params.put("table", table);
params.put("entityPackageName", baseEntityPackagePath.replace("/", "."));
params.put("entityClassName", baseEntityClassName);

View File

@ -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

View File

@ -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