mybatis-plus (新)代码生成器

mybatis-plus (新) 代码生成器

mybatis-plus-generator 3.5.1 及其以上版本,对历史版本不兼容!3.5.1 以下的请参考 代码生成器旧


  public static void main(String[] args) {
      FastAutoGenerator.create("jdbc:mysql://192.168.1.165:4406/haomiao_platform_v3?" +
                      "autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&" +
                      "zeroDateTimeBehavior=convertToNull&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8",
                      "root",
                      "root")
              .globalConfig(builder -> {
                  builder.author("xzj") // 设置作者
                          .enableSwagger() // 开启 swagger 模式
                          .fileOverride() // 覆盖已生成文件
                          .outputDir("D:\\新建文件夹 (3)\\ehm-community\\community-server-admin\\src\\main\\java"); // 指定输出目录
              })
              //包名配置,这个配置指/src/main/java下开始的包路径
              .packageConfig(builder -> {
                  builder.parent("com.ehaomiao.community.server.admin.business") // 设置父包名
                          .moduleName("mall") // 设置父包模块名
                          .xml("mapper.mapping");
              })
              //策略配置
              .strategyConfig(builder -> {
                  builder.addInclude("hm_alarm_log","hm_alarm_log") // 设置需要生成的表名
                          .addTablePrefix("hm_")
                          //自定义配置继承父包 HmBaseMapper 此类为我们公司扩展类
                          .mapperBuilder()
                          .superClass(HmBaseMapper.class)
                          .build()
                          //实体类配置
                          .entityBuilder()
                          .enableLombok()
                          .enableChainModel()
                          .enableTableFieldAnnotation()
                          .build()
                          //service配置
                          .serviceBuilder()
                          .superServiceClass(IHmService.class)
                          .superServiceImplClass(HmServiceImpl.class)
                          .build();
              })
              // 使用Freemarker引擎模板,默认的是Velocity引擎模板
              .templateEngine(new FreemarkerTemplateEngine())
              //自定义模板
              .templateConfig(builder -> {
                  builder.entity("/templates/entity.java")
                          .build();
              })
              .execute();
  }

 

根据公司自定义代码模板 entity.java.ftl


package ${package.Entity};

<#list table.importPackages as pkg>
import ${pkg};
</#list>
<#if 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>

/**
* <p>
* ${table.comment!}
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if entityLombokModel>
@Getter
@Setter
  <#if chainModel>
@Accessors(chain = true)
  </#if>
</#if>
<#if table.convert>
@TableName("${schemaName}${table.name}")
</#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>

  private static final long serialVersionUID = 1L;
</#if>
<#-- ---------- BEGIN 字段循环遍历 ---------->
<#list table.fields as field>
  <#if field.keyFlag>
      <#assign keyPropertyName="${field.propertyName}"/>
  </#if>

  /**
    * ${field.comment}
    */
  <#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>
}

 

posted @   java架构师1  阅读(603)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示