代码生成模板自定义

代码生成原理

当开发者选中某张表进行代码生成时,如下图所示,首先会注入 PIGX 定义好的 Velocity 模板(开发平台 > 模板管理)。然后查询此表的相关元信息(字段、注释)并注入。最终使用 Velocity 渲染出相关文本。

代码生成原理示意图

Velocity 模板基础

学习资源

参考 Velocity 基本语法说明 了解模板语法。

Entity 实体生成的模板代码:

public class ${ClassName}Entity extends Model<${ClassName}Entity> {

#foreach ($field in $fieldList)
#if($field.primaryPk)
    @TableId(type = IdType.ASSIGN_ID)
#end
    @Schema(description="$comment"#if($field.hidden),hidden=$field.hidden#end)
    private $field.attrType $field.attrName;
#end
}
模板示例

上下文元信息

如下属性可在 Velocity 模板中直接使用相关语法进行取值。

模板基本属性

KeyDescription
dbType数据库类型
package包名
packagePath包路径
version版本
moduleName模块名
ModuleName模块名首字母大写
functionName功能名
FunctionName功能名首字母大写
formLayout表单布局
style样式,对应的模板组
author作者
datetime当前日期和时间
date当前日期
importList导入列表
tableName数据库表名
tableComment数据库表注释
className类名的小写形式
ClassName类名
fieldList字段列表
backendPath后端路径
frontendPath前端路径
childFieldList子表字段列表
childTableName子表名
mainField主表关联字段名称
childField子表关联字段名称
ChildClassName子类名首字母大写
childClassName子类名的小写形式
primaryList主键字段列表
formList表单字段列表
gridList表格字段列表
queryList查询字段列表
pk主键字段

模板字段属性

KeyDescription
dsName数据源名
tableName表名称
fieldNameSQL 字段名称
fieldTypeSQL 字段类型
attrNameJava 属性名
attrTypeJava 属性类型
fieldComment字段说明
sort排序
packageName属性包名
autoFill自动填充
primaryPk是否为主键
baseField是否为基类字段
formItem是否为表单项
formRequired表单必填
formType表单类型
formValidator表单效验
gridItem是否为列表项
gridSort列表排序
queryItem是否为查询项
queryType查询方式
queryFormType查询表单类型
fieldDict字段字典类型

环境判断属性

KeyDescription
isSpringBoot3是否是 springboot3
isTenant是否支持多租户