makejavas / EasyCode

基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml)。只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。
MIT License
1.04k stars 328 forks source link

feat: 从实体类右键生成代码模式下,支持实体类字段【注释标签】的读取,并存放入ext数据中。 #91

Closed wujiaran closed 1 year ago

wujiaran commented 2 years ago

从实体类生成代码的模式下,支持读取实体类字段的【注释标签】,格式以 ‘@’ 开头。

用户可以在实体类字段中自定义添加注释标签,并在模板代码中自行使用。

比如可以加个 @controlType 指定字段使用的前端控件类型,@sort 指定字段在前端显示的排序等。

添加的新功能只是把 注释标签 加入到列的 ext 数据中,具体代码模板中如何使用 ext 数据,由用户自行控制。

使用示例如下:

/**
 * 客户
 */
@Entity
@Getter
@Setter
public class Client {

    /**
     * 客户名称
     * 
     * @controlType input
     * @sort 1
     * @showInDetail
     * @showInList
     * @required 客户名称不能为空
     * 
     * @testObj {"key1": "testStr", "key2": 123, "key3": true}
     * @testTag1 1 2 3 中文 4 5 6
     * @testTag2 [1, 2, 3]
     */
    private String name;

    /**
     * 手机
     * 
     * @controlType input
     * @sort 2
     * @showInDetail
     * @showInList false
     * @required 手机不能为空
     */
    private String phone;

}

列数据中将读到:

ColumnInfo(
    obj=null,
    name=name,
    comment=客户名称,
    type=String,
    shortType=String,
    custom=false,
    ext={
        testObj={"key1": "testStr", "key2": 123, "key3": true},
        controlType=input,
        showInList=true,
        sort=1,
        showInDetail=true,
        testTag1=1 2 3 中文 4 5 6,
        required=客户名称不能为空,
        testTag2=[1, 2, 3]
    }
)

ColumnInfo(
    obj=null,
    name=phone,
    comment=手机,
    type=String,
    shortType=String,
    custom=false,
    ext={
        controlType=input,
        showInList=false,
        sort=2,
        showInDetail=true,
        required=手机不能为空
    }
)

【注意事项】

1、如未提供注释标签的值,将会默认填充 true 值。如:@showInDetail,在 ext 中显示为:{ "showInDetail": true }

2、默认排除:@param @return 这两个常用方法注释标签,避免误读注释标签。

3、考虑到标签注释值的获取已支持复杂的字符串,且没想到重复标签出现的场景,所以未处理重复标签。出现多个重复标签(如:有多个 @testTag) 将会相互覆盖,只保留一个值。

【PS】

这个功能主要是想补充 ext 数据的新增方式,毕竟在 ext 数据配置页面操作不如直接在注释里写来得方便,当然,如果是从数据库生成的,那是得老老实实在界面里维护了。