From 3a28c3b3b4975b869f43a4eeb869d71856e8e994 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: Thu, 13 Feb 2025 18:05:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20Codegen=20=E7=94=9F=E6=88=90=20entity?= =?UTF-8?q?=20base=20=E6=97=B6=E6=94=AF=E6=8C=81=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E8=A6=86=E7=9B=96=E5=B7=B2=E6=9C=89=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/others/codegen.md | 1 + .../codegen/config/EntityConfig.java | 20 +++++++++++++++++++ .../codegen/config/GlobalConfig.java | 14 +++++++++++++ .../generator/impl/EntityGenerator.java | 4 +++- 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/docs/zh/others/codegen.md b/docs/zh/others/codegen.md index 0620d174..e8ebbfaf 100644 --- a/docs/zh/others/codegen.md +++ b/docs/zh/others/codegen.md @@ -303,6 +303,7 @@ globalConfig.getTemplateConfig() | setSuperClass(Class) | Entity 类的父类,可以自定义一些 BaseEntity 类 | null | | setSuperClassFactory(Function) | Entity 类的父类工厂,可以用于对特定的 Class 设置父类,而非全部 Entity 的父类 | null | | setOverwriteEnable(boolean) | 是否覆盖之前生成的文件 | false | +| setEntityBaseOverwriteEnable(boolean) | 生成Base类时是否覆盖之前生成的文件 | false | | setImplInterfaces(Class[]) | Entity 默认实现的接口 | Serializable.class | | setWithLombok(boolean) | Entity 是否使用 Lombok 注解 | false | | setWithSwagger(boolean) | Entity 是否使用 Swagger 注解 | 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 e3cf2b67..853e8e90 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 @@ -60,6 +60,11 @@ public class EntityConfig implements Serializable { */ private boolean overwriteEnable; + /** + * 生成Base类时是否覆盖之前生成的文件。 + */ + private boolean baseOverwriteEnable; + /** * Entity 默认实现的接口。 */ @@ -228,6 +233,21 @@ public class EntityConfig implements Serializable { return this; } + /** + * 生成Base类时是否覆盖原有文件。 + */ + public boolean isBaseOverwriteEnable() { + return baseOverwriteEnable; + } + + /** + * 设置生成Base类时是否覆盖原有文件。 + */ + public EntityConfig setBaseOverwriteEnable(boolean baseOverwriteEnable) { + this.baseOverwriteEnable = baseOverwriteEnable; + return this; + } + /** * 获取实现接口。 */ 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 dfc533d1..f1b55083 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 @@ -888,6 +888,20 @@ public class GlobalConfig implements Serializable { getEntityConfig().setOverwriteEnable(entityOverwriteEnable); } + /** + * @see EntityConfig#isBaseOverwriteEnable() + */ + public boolean isEntityBaseOverwriteEnable() { + return getEntityConfig().isBaseOverwriteEnable(); + } + + /** + * @see EntityConfig#setBaseOverwriteEnable(boolean) + */ + public void setEntityBaseOverwriteEnable(boolean entityBaseOverwriteEnable) { + getEntityConfig().setBaseOverwriteEnable(entityBaseOverwriteEnable); + } + /** * @see EntityConfig#getClassPrefix() */ 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 06cc9ceb..df40b066 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 @@ -139,7 +139,9 @@ public class EntityGenerator implements IGenerator { File baseEntityJavaFile = new File(sourceDir, baseEntityPackagePath + "/" + baseEntityClassName + globalConfig.getFileType()); - + if (baseEntityJavaFile.exists() && !entityConfig.isBaseOverwriteEnable()) { + return; + } // 排除忽略列 if (globalConfig.getStrategyConfig().getIgnoreColumns() != null) { table.getColumns().removeIf(column -> globalConfig.getStrategyConfig().getIgnoreColumns().contains(column.getName().toLowerCase()));