tableNames;
+
public String buildModule(String p) {
if (StringUtils.isEmpty(moduleName)){
return p;
diff --git a/ds-commons/ds-config/ds-mybatisplus-support/src/main/resources/templates/generator/entity.java.ftl b/ds-commons/ds-config/ds-mybatisplus-support/src/main/resources/templates/generator/entity.java.ftl
new file mode 100644
index 0000000..c9fc54e
--- /dev/null
+++ b/ds-commons/ds-config/ds-mybatisplus-support/src/main/resources/templates/generator/entity.java.ftl
@@ -0,0 +1,166 @@
+package ${package.Entity};
+
+<#list table.importPackages as pkg>
+import ${pkg};
+#list>
+<#if springdoc>
+import io.swagger.v3.oas.annotations.media.Schema;
+<#elseif swagger>
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+#if>
+<#if entityLombokModel>
+import lombok.Getter;
+import lombok.Setter;
+ <#if chainModel>
+import lombok.experimental.Accessors;
+ #if>
+#if>
+<#if superEntityClass??>
+<#elseif activeRecord>
+<#elseif entitySerialVersionUID>
+import java.io.Serial;
+#if>
+
+/**
+ *
+ * ${table.comment!}
+ *
+ *
+ * @author ${author}
+ * @since ${date}
+ */
+<#if entityLombokModel>
+@Getter
+@Setter
+ <#if chainModel>
+@Accessors(chain = true)
+ #if>
+#if>
+<#if table.convert>
+@TableName("${schemaName}${table.name}")
+#if>
+<#if springdoc>
+@Schema(name = "${entity}", description = "$!{table.comment}")
+<#elseif swagger>
+@ApiModel(value = "${entity}对象", description = "${table.comment!}")
+#if>
+<#if superEntityClass??>
+public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}>#if> {
+<#elseif activeRecord>
+public class ${entity} extends Model<${entity}> {
+<#elseif entitySerialVersionUID>
+public class ${entity} implements Serializable {
+<#else>
+public class ${entity} {
+#if>
+<#if entitySerialVersionUID>
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+#if>
+<#-- ---------- BEGIN 字段循环遍历 ---------->
+<#list table.fields as field>
+ <#if field.keyFlag>
+ <#assign keyPropertyName="${field.propertyName}"/>
+ #if>
+
+ <#if field.comment!?length gt 0>
+ <#if springdoc>
+ @Schema(description = "${field.comment}")
+ <#elseif swagger>
+ @ApiModelProperty("${field.comment}")
+ <#else>
+ /**
+ * ${field.comment}
+ */
+ #if>
+ #if>
+ <#if field.keyFlag>
+ <#-- 主键 -->
+ <#if field.keyIdentityFlag>
+ @TableId(value = "${field.annotationColumnName}", type = IdType.AUTO)
+ <#elseif idType??>
+ @TableId(value = "${field.annotationColumnName}", type = IdType.${idType})
+ <#elseif field.convert>
+ @TableId("${field.annotationColumnName}")
+ #if>
+ <#-- 普通字段 -->
+ <#elseif field.fill??>
+ <#-- ----- 存在字段填充设置 ----->
+ <#if field.convert>
+ @TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill})
+ <#else>
+ @TableField(fill = FieldFill.${field.fill})
+ #if>
+ <#elseif field.convert>
+ @TableField("${field.annotationColumnName}")
+ #if>
+ <#-- 乐观锁注解 -->
+ <#if field.versionField>
+ @Version
+ #if>
+ <#-- 逻辑删除注解 -->
+ <#if field.logicDeleteField>
+ @TableLogic
+ #if>
+ private ${field.propertyType} ${field.propertyName};
+#list>
+<#------------ END 字段循环遍历 ---------->
+<#if !entityLombokModel>
+ <#list table.fields as field>
+ <#if field.propertyType == "boolean">
+ <#assign getprefix="is"/>
+ <#else>
+ <#assign getprefix="get"/>
+ #if>
+
+ public ${field.propertyType} ${getprefix}${field.capitalName}() {
+ return ${field.propertyName};
+ }
+
+ <#if chainModel>
+ public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
+ <#else>
+ public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
+ #if>
+ this.${field.propertyName} = ${field.propertyName};
+ <#if chainModel>
+ return this;
+ #if>
+ }
+ #list>
+#if>
+<#if entityColumnConstant>
+ <#list table.fields as field>
+
+ public static final String ${field.name?upper_case} = "${field.name}";
+ #list>
+#if>
+<#if activeRecord>
+
+ @Override
+ public Serializable pkVal() {
+ <#if keyPropertyName??>
+ return this.${keyPropertyName};
+ <#else>
+ return null;
+ #if>
+ }
+#if>
+<#if !entityLombokModel>
+
+ @Override
+ public String toString() {
+ return "${entity}{" +
+ <#list table.fields as field>
+ <#if field_index==0>
+ "${field.propertyName} = " + ${field.propertyName} +
+ <#else>
+ ", ${field.propertyName} = " + ${field.propertyName} +
+ #if>
+ #list>
+ "}";
+ }
+#if>
+}
diff --git a/ds-commons/ds-config/ds-mybatisplus-support/src/main/resources/templates/generator/entity.java.vm b/ds-commons/ds-config/ds-mybatisplus-support/src/main/resources/templates/generator/entity.java.vm
new file mode 100644
index 0000000..34da4e9
--- /dev/null
+++ b/ds-commons/ds-config/ds-mybatisplus-support/src/main/resources/templates/generator/entity.java.vm
@@ -0,0 +1,167 @@
+package ${package.Entity};
+
+#foreach($pkg in ${table.importPackages})
+import ${pkg};
+#end
+#if(${springdoc})
+import io.swagger.v3.oas.annotations.media.Schema;
+#elseif(${swagger})
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+#end
+#if(${entityLombokModel})
+import lombok.Getter;
+import lombok.Setter;
+#if(${chainModel})
+import lombok.experimental.Accessors;
+#end
+#end
+#if(${superEntityClass})
+#elseif(${activeRecord})
+#elseif(${entitySerialVersionUID})
+import java.io.Serial;
+#end
+/**
+ *
+ * $!{table.comment}
+ *
+ *
+ * @author ${author}
+ * @since ${date}
+ */
+#if(${entityLombokModel})
+@Getter
+@Setter
+ #if(${chainModel})
+@Accessors(chain = true)
+ #end
+#end
+#if(${table.convert})
+@TableName("${schemaName}${table.name}")
+#end
+#if(${springdoc})
+@Schema(name = "${entity}", description = "$!{table.comment}")
+#elseif(${swagger})
+@ApiModel(value = "${entity}对象", description = "$!{table.comment}")
+#end
+#if(${superEntityClass})
+public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end {
+#elseif(${activeRecord})
+public class ${entity} extends Model<${entity}> {
+#elseif(${entitySerialVersionUID})
+public class ${entity} implements Serializable {
+#else
+public class ${entity} {
+#end
+#if(${entitySerialVersionUID})
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+#end
+## ---------- BEGIN 字段循环遍历 ----------
+#foreach($field in ${table.fields})
+
+#if(${field.keyFlag})
+#set($keyPropertyName=${field.propertyName})
+#end
+#if("$!field.comment" != "")
+ #if(${springdoc})
+ @Schema(description = "${field.comment}")
+ #elseif(${swagger})
+ @ApiModelProperty("${field.comment}")
+ #else
+ /**
+ * ${field.comment}
+ */
+ #end
+#end
+#if(${field.keyFlag})
+## 主键
+ #if(${field.keyIdentityFlag})
+ @TableId(value = "${field.annotationColumnName}", type = IdType.AUTO)
+ #elseif(!$null.isNull(${idType}) && "$!idType" != "")
+ @TableId(value = "${field.annotationColumnName}", type = IdType.${idType})
+ #elseif(${field.convert})
+ @TableId("${field.annotationColumnName}")
+ #end
+## 普通字段
+#elseif(${field.fill})
+## ----- 存在字段填充设置 -----
+ #if(${field.convert})
+ @TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill})
+ #else
+ @TableField(fill = FieldFill.${field.fill})
+ #end
+#elseif(${field.convert})
+ @TableField("${field.annotationColumnName}")
+#end
+## 乐观锁注解
+#if(${field.versionField})
+ @Version
+#end
+## 逻辑删除注解
+#if(${field.logicDeleteField})
+ @TableLogic
+#end
+ private ${field.propertyType} ${field.propertyName};
+#end
+## ---------- END 字段循环遍历 ----------
+#if(!${entityLombokModel})
+#foreach($field in ${table.fields})
+ #if(${field.propertyType.equals("boolean")})
+ #set($getprefix="is")
+ #else
+ #set($getprefix="get")
+ #end
+
+ public ${field.propertyType} ${getprefix}${field.capitalName}() {
+ return ${field.propertyName};
+ }
+
+ #if(${chainModel})
+ public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
+ #else
+ public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
+ #end
+ this.${field.propertyName} = ${field.propertyName};
+ #if(${chainModel})
+ return this;
+ #end
+ }
+#end
+## --foreach end---
+#end
+## --end of #if(!${entityLombokModel})--
+#if(${entityColumnConstant})
+ #foreach($field in ${table.fields})
+
+ public static final String ${field.name.toUpperCase()} = "${field.name}";
+ #end
+#end
+#if(${activeRecord})
+
+ @Override
+ public Serializable pkVal() {
+ #if(${keyPropertyName})
+ return this.${keyPropertyName};
+ #else
+ return null;
+ #end
+ }
+#end
+#if(!${entityLombokModel})
+
+ @Override
+ public String toString() {
+ return "${entity}{" +
+ #foreach($field in ${table.fields})
+ #if($!{foreach.index}==0)
+ "${field.propertyName} = " + ${field.propertyName} +
+ #else
+ ", ${field.propertyName} = " + ${field.propertyName} +
+ #end
+ #end
+ "}";
+ }
+#end
+}
diff --git a/pom.xml b/pom.xml
index df54a1c..46750da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,9 @@
2022.0.0.0-RC2
2.1.0
4.3.0
+ 8.0.24
+ 3.5.3.2
+ 2.3
@@ -53,6 +56,26 @@
pom
import