From 58dd10a9ceef71b6e2aa7013671a4aae6b8bb9f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=80=E6=BA=90=E6=B5=B7=E5=93=A5?= Date: Thu, 13 Apr 2023 17:17:57 +0800 Subject: [PATCH] =?UTF-8?q?feature=EF=BC=9A=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=99=A8=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE=20Mapper?= =?UTF-8?q?=20=E5=89=8D=E5=90=8E=E7=BC=80=E9=85=8D=E7=BD=AE=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20close=20#I6TITQ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/codegen.md | 15 ++++++-- .../com/mybatisflex/codegen/Generator.java | 12 +++++-- .../codegen/config/GlobalConfig.java | 36 +++++++++++++++++++ .../main/resources/templates/enjoy/mapper.tpl | 2 +- 4 files changed, 59 insertions(+), 6 deletions(-) diff --git a/docs/zh/codegen.md b/docs/zh/codegen.md index 23c9c599..9aaa16cc 100644 --- a/docs/zh/codegen.md +++ b/docs/zh/codegen.md @@ -91,7 +91,7 @@ GlobalConfig 支持更多的配置如下: ```java public class GlobalConfig { - + //代码生成目录 private String sourceDir; @@ -99,15 +99,24 @@ public class GlobalConfig { private String entityPackage; //entity 是否使用 Lombok - private Boolean entityWithLombok = false; + private boolean entityWithLombok = false; //是否生成 mapper 类 private boolean mapperGenerateEnable = false; + //是否覆盖已经存在的 mapper + private boolean mapperOverwriteEnable = false; + + //mapper 类的前缀 + private String mapperClassPrefix; + + //mapper 类的后缀 + private String mapperClassSuffix = "Mapper"; + //mapper 的包名 private String mapperPackage; - //数据库表前缀 + //数据库表前缀,多个前缀用英文逗号(,) 隔开 private String tablePrefix; //逻辑删除的默认字段名称 diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/Generator.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/Generator.java index 251653be..6d29180f 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/Generator.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/Generator.java @@ -75,13 +75,21 @@ public class Generator { if (globalConfig.isMapperGenerateEnable()) { String mapperPackagePath = globalConfig.getMapperPackage().replace(".", "/"); - File mapperJavaFile = new File(globalConfig.getSourceDir(), mapperPackagePath + "/" + table.buildEntityClassName() + "Mapper.java"); + + + File mapperJavaFile = new File(globalConfig.getSourceDir(), mapperPackagePath + "/" + globalConfig.getMapperClassPrefix() + + table.buildEntityClassName() + globalConfig.getMapperClassSuffix() + ".java"); if (!mapperJavaFile.getParentFile().exists()) { if (!mapperJavaFile.getParentFile().mkdirs()) { throw new IllegalStateException("Can not mkdirs by dir: " + mapperJavaFile.getParentFile()); } } - templateEngine.generateMapper(globalConfig, table, mapperJavaFile); + + if (mapperJavaFile.exists() && !globalConfig.isMapperOverwriteEnable()) { + //ignore + } else { + templateEngine.generateMapper(globalConfig, table, mapperJavaFile); + } } } 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 8dcd2f46..113c7d64 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 @@ -38,6 +38,15 @@ public class GlobalConfig { //是否生成 mapper 类 private boolean mapperGenerateEnable = false; + //是否覆盖已经存在的 mapper + private boolean mapperOverwriteEnable = false; + + //mapper 类的前缀 + private String mapperClassPrefix; + + //mapper 类的后缀 + private String mapperClassSuffix = "Mapper"; + //mapper 的包名 private String mapperPackage; @@ -107,6 +116,33 @@ public class GlobalConfig { this.mapperGenerateEnable = mapperGenerateEnable; } + public boolean isMapperOverwriteEnable() { + return mapperOverwriteEnable; + } + + public void setMapperOverwriteEnable(boolean mapperOverwriteEnable) { + this.mapperOverwriteEnable = mapperOverwriteEnable; + } + + public String getMapperClassPrefix() { + if (StringUtil.isBlank(mapperClassPrefix)){ + return ""; + } + return mapperClassPrefix; + } + + public void setMapperClassPrefix(String mapperClassPrefix) { + this.mapperClassPrefix = mapperClassPrefix; + } + + public String getMapperClassSuffix() { + return mapperClassSuffix; + } + + public void setMapperClassSuffix(String mapperClassSuffix) { + this.mapperClassSuffix = mapperClassSuffix; + } + public String getMapperPackage() { if (StringUtil.isBlank(mapperPackage)) { throw new IllegalStateException("mapperPackage can not be null or blank in GlobalConfig."); diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/mapper.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/mapper.tpl index c445097b..996a34fa 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/mapper.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/mapper.tpl @@ -3,6 +3,6 @@ package #(globalConfig.mapperPackage); import com.mybatisflex.core.BaseMapper; import #(globalConfig.entityPackage).#(table.buildEntityClassName()); -public interface #(table.buildEntityClassName())Mapper extends BaseMapper<#(table.buildEntityClassName())> { +public interface #(globalConfig.mapperClassPrefix ??)#(table.buildEntityClassName())#(globalConfig.mapperClassSuffix ??) extends BaseMapper<#(table.buildEntityClassName())> { }