【代码生成】IDEA插件 MyBatisX Plus JAVA代码生成 模板

【代码生成】IDEA插件 MyBatisX Plus JAVA代码生成 模板

可以通过规则生成枚举类ENUM

MyBatisX 对应的模板

【代码生成】IDEA插件 MyBatisX Plus JAVA代码生成 模板_第1张图片

生成代码的模板配置

【代码生成】IDEA插件 MyBatisX Plus JAVA代码生成 模板_第2张图片

按照指定目录找到插件模板配置目录 Scratches and Consoles -> Extensions -> MybatisX
这里会提供默认模板: 例如在 1.4.13 提供了模板: default-all,default,mybatis-plus2,mybatis-plus3
如果想重置默认模板, 可以右键点击 MybatisX 目录,选择 Restore Default Extensions 选项

自定义模板内容

名称 含义
tableClass.fullClassName 类的全称(包括包名)
tableClass.shortClassName 类的简称
tableClass.tableName 表名
tableClass.pkFields 表的所有主键字段
tableClass.allFields 表的所有字段
tableClass.baseFields 排除主键和 blob 的所有字段
tableClass.baseBlobFields 排除主键的所有字段
tableClass.remark 表注释

字段信息

名称 含义
field.fieldName 字段名称
field.columnName 列名称
field.jdbcType jdbc 类型
field.columnLength 列段长度
field.columnScale 列的精度
field.columnIsArray 字段类型是不是数组类型
field.shortTypeName java 类型短名称, 通常用于定义字段
field.fullTypeName java 类型的长名称, 通常用于导入
field.remark 字段注释
field.autoIncrement 是否自增
field.nullable 是否允许为空

配置信息

名称 含义
baseInfo.shortClassName 配置名称
baseInfo.tableName 配置文件名称
baseInfo.pkFields 配置名称
baseInfo.allFields 后缀
baseInfo.baseFields 包名
baseInfo.baseBlobFields 模板内容
baseInfo.remark 相对模块的资源文件路径

修改过的实体模板   

可以生成枚举类ENUM

修改规则参考

什么是 FreeMarker? - FreeMarker 中文官方参考手册 (foofun.cn)

domain.ftl

package ${domain.packageName};

import lombok.Data;
import lombok.Getter;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;

import java.io.Serializable;
<#list tableClass.importList as fieldType>${"\n"}import ${fieldType};
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import org.hibernate.validator.constraints.Length;

/**
 * @Description: ${tableClass.remark!}
 * @Author:      gw
 * @TableName    ${tableClass.tableName}
 * @Date:        ${.now?string('yyyy-MM-dd HH:mm:ss')}
 * @Version:     V1.0
 */
@Data
@Accessors(chain = true)
@TableName(value ="${tableClass.tableName}")
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "${tableClass.remark!?replace("\"","\\\"")} 实体类")
public class ${tableClass.shortClassName} implements Serializable {

<#list tableClass.pkFields as field>
    /**
     * 主键:${field.remark!}
     */
    @TableId(value = "${field.columnName}"<#if field.autoIncrement>, type = IdType.AUTO)
    @ApiModelProperty("${field.remark!?replace("\"","\\\"")}")<#if field.jdbcType=="VARCHAR">${"\n    "}@Length(max= ${field.columnLength},message="编码长度不能超过${field.columnLength}")<#if field.shortTypeName == 'Date'>${"\n    "}@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
<#--    正常字段类型 不做处理 ↓ -->
<#--    private ${field.shortTypeName} ${field.fieldName};-->
<#--    Long字段类型 转为 String字符串 ↓ -->
    private <#if field.shortTypeName == 'Long'>String<#else>${field.shortTypeName} ${field.fieldName};


<#list tableClass.baseBlobFields as field>
    /**
     * ${field.remark!}
     */<#if (!field.nullable || field.jdbcType=="VARCHAR") && field.columnLength != -1><#if !field.nullable><#if field.jdbcType=="VARCHAR">${"\n    "}@NotBlank(message="[${field.remark!?replace("\"","\\\"")}]不能为空")<#else>${"\n    "}@NotNull(message="[${field.remark!?replace("\"","\\\"")}]不能为空")<#if field.jdbcType=="VARCHAR" && field.columnLength != -1><#if !field.nullable>${"\n    "}@Size(max= ${field.columnLength?c},message="编码长度不能超过${field.columnLength?c}")
    @TableField(value = "${field.columnName}")
    @ApiModelProperty("${field.remark!?replace("\"","\\\"")}")<#if field.jdbcType=="VARCHAR" && field.columnLength != -1>${"\n    "}@Length(max= ${field.columnLength},message="编码长度不能超过${field.columnLength}")<#if field.shortTypeName == 'Date'>${"\n    "}@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
<#--    正常字段类型 不做处理 ↓ -->
<#--    private ${field.shortTypeName} ${field.fieldName};-->
<#--    Long字段类型 转为 String字符串 ↓ -->
    private <#if field.shortTypeName == 'Long'>String<#else>${field.shortTypeName} ${field.fieldName};


    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

<#--生成枚举
    默认字段注释规则 例:
        字段 sex
        注释 性别枚举(0:保密/1:男/2:女)
-->
<#list tableClass.baseBlobFields as field>
    <#if field.remark?contains("枚举(")>
    /**
    * 枚举: ${field.remark!}
    */
    @Getter
    public enum ${field.fieldName?cap_first}Enum {

    <#--               判断开始 枚举(         结尾 )       中间通过/分割   例如 枚举(0:保密/1:男/2:女)  -->
    <#list field.remark?split("枚举(")[1]?split(")")[0]?split("/") as x>
    <#--                              code 跟 desc 中间通过:分割     例如 1:男/2:女     -->
        ${field.columnName?upper_case}_${x?split(":")[0]?replace("-","_")}(${x?split(":")[0]}, "${x?split(":")[1]}")<#if x?is_last>;<#else>,
    

        private final int code;
        private final String desc;

        ${field.fieldName?cap_first}Enum(int code, String desc){
            this.code = code;
            this.desc = desc;
        }
        @Override
        public String toString() {
            return String.valueOf(this.code);
        }
        /**
        * 根据编号获取对应枚举实例
        * @param code
        * @return   枚举实例
        */
        public static ${field.fieldName?cap_first}Enum getEnum(int code) {
            for (${field.fieldName?cap_first}Enum result : ${field.fieldName?cap_first}Enum.values()) {
                if (result.code == code) {
                    return result;
                }
            }
            return null;
        }
        /**
        * 根据编号获取对应描述
        * @param code
        * @return   描述
        */
        public static String getDesc(int code) {
            ${field.fieldName?cap_first}Enum anEnum = getEnum(code);
            if(anEnum != null){
                return anEnum.getDesc();
            }
            return null;
        }
    }

    

<#--<#list tableClass.allFields as field>-->
<#--    /**-->
<#--    * ${field.remark!}-->
<#--    */-->
<#--    private void set${field.fieldName?cap_first}(${field.shortTypeName} ${field.fieldName}){-->
<#--    this.${field.fieldName} = ${field.fieldName};-->
<#--    }-->
<#---->
<#--<#list tableClass.allFields as field>-->
<#--    /**-->
<#--    * ${field.remark!}-->
<#--    */-->
<#--    private ${field.shortTypeName} get${field.fieldName?cap_first}(){-->
<#--    return this.${field.fieldName};-->
<#--    }-->
<#---->
}

你可能感兴趣的:(工具自用,intellij-idea,java,postman)