前言

在项目中,在字段转义时如果是跨服务的,都需要通过公共的接口根据表名去查询,再加上使用mybatisPlus时候指定查询的列,也可以用枚举中定义的字段去查询,于是就想着用easyCode去完成这件事。

步骤

  1. 前提,你已经安装好了easyCode插件。并了解如何使用。
  2. 编写模板,这里可以根据自己的公司项目自定义话。
##类名的前、后缀
#set($className = $tool.append($tableInfo.name, "Enum"))
##设置回调(也就是设置文件存储路径和文件存储后缀)
##设置文件存储名 保存该类的名字.java文件
$!callback.setFileName( ${tool.append($className, ".java")})
##文件储存路径 可以加表达式
$!callback.setSavePath($tableInfo.savePath)


##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;
import com.baison.e3plus.common.api.util.IReqEnum;


public enum $!{tableInfo.name}Enum implements IReqEnum {
    TABLE_NAME("$tableInfo.obj.name","$tableInfo.comment"),
   #foreach($column in $tableInfo.fullColumn)
    $column.obj.name.toUpperCase()("$column.obj.name","$!column.comment"),
   #end
    ;
    private final String enumCode;// 代码
    private final String enumName;// 名称

   $!{tableInfo.name}Enum(String enumCode, String enumName) {
        this.enumCode = enumCode;
        this.enumName = enumName;
    }

    public String getCode() {
        return enumCode;
    }

    public String getName() {
        return enumName;
    }

    @Override
    public String getTableName() {
        return TABLE_NAME.getCode();
    }

    @Override
    public String getFieldName() {
        return this.getCode();
    }
}

说明文档(更详细的可以去查看easyCode文档)

说明文档:
    属性
    $author 设置中的作者 java.lang.String
    $modulePath 选中的module路径 java.lang.String
    $projectPath 项目绝对路径 java.lang.String

    对象
    $tableInfo 表对象
        obj 表原始对象 com.intellij.database.model.DasTable
        name 表名(转换后的首字母大写)java.lang.String
        comment 表注释 java.lang.String
        fullColumn 所有列 java.util.List<ColumnInfo>
        pkColumn 主键列 java.util.List<ColumnInfo>
        otherColumn 其他列 java.util.List<ColumnInfo>,除主键以外的列
        savePackageName 保存的包名 java.lang.String
        savePath 保存路径 java.lang.String
        saveModelName 保存的model名称 java.lang.String
    columnInfo 列对象
        obj 列原始对象 com.intellij.database.model.DasColumn
        name 列名(首字母小写) java.lang.String
        comment 列注释 java.lang.String
        type 列类型(类型全名) java.lang.String
        shortType 列类型(短类型) java.lang.String
        custom 是否附加列 java.lang.Boolean
        ext 附加字段(Map类型) java.lang.Map<java.lang.String, java.lang.Object>
    $tableInfoList java.util.List<TableInfo>所有选中的表
    $importList 所有需要导入的包集合 java.util.Set<java.lang.String>

    回调
    &callback 回调对象
        setFileName(String) 设置文件储存名字
        setSavePath(String) 设置文件储存路径,默认使用选中路径
        setReformat(Boolean) 设置是否重新格式化生成后的代码,默认为true

    工具
    $tool
        firstUpperCase(String name) 首字母大写方法
        firstLowerCase(String name) 首字母小写方法
        getClsNameByFullName(String fullName) 通过包全名获取类名
        getJavaName(String name) 将下划线分割字符串转驼峰命名(属性名)
        getClassName(String name) 将下划线分割字符串转驼峰命名(类名)
        hump2Underline(String str) 将驼峰字符串转下划线字符串
        append(Object... objs) 多个数据进行拼接
        newHashSet(Object... objs) 创建一个HashSet对象
        newArrayList(Object... objs) 创建一个ArrayList对象
        newLinkedHashMap() 创建一个LinkedHashMap()对象
        newHashMap() 创建一个HashMap()对象
        getField(Object obj, String fieldName) 获取对象的属性值,可以访问任意修饰符修饰的属性.配合debug方法使用.
        call(Object... objs) 空白执行方法,用于调用某些方法时消除返回值
        debug(Object obj) 调式方法,用于查询对象结构.可查看对象所有属性与public方法
        serial() 随机获取序列化的UID
        service(String serviceName, Object... param)远程服务调用
        parseJson(String) 将字符串转Map对象
        toJson(Object, Boolean) 将对象转json对象,Boolean:是否格式化json,不填时为不格式化。
        toUnicode(String, Boolean) 将String转换为unicode形式,Boolean:是否转换所有符号,不填时只转换中文及中文符号。
    $time
        currTime(String format) 获取当前时间,指定时间格式(默认:yyyy-MM-dd HH:mm:ss)
    $generateService
        run(String, Map<String,Object>) 代码生成服务,参数1:模板名称,参数2:附加参数。
    $dasUtil Database提供的工具类,具体可方法请查看源码,适用于高端玩家
    $dbUtil  Database提供的工具类,具体可方法请查看源码,适用于高端玩家

参考文章

https://github.com/makejavas/EasyCode
https://blog.csdn.net/PotatoWatermelon/article/details/103199780