本仓库仅做镜像,仓库PR源:https://github.com/pig-mesh/CGTM

PIGCLOUD 97baf96247 feat(treeTable): 新增左树右表相关组件及功能实现 3 weeks ago
.github fa80032bc4 feat: merge tree 分支树形表格功能 1 month ago
common 93709398d1 docs(spec): clarify left-tree-right-table design details 3 weeks ago
multiple 93709398d1 docs(spec): clarify left-tree-right-table design details 3 weeks ago
single 93709398d1 docs(spec): clarify left-tree-right-table design details 3 weeks ago
tree 93709398d1 docs(spec): clarify left-tree-right-table design details 3 weeks ago
treeTable 97baf96247 feat(treeTable): 新增左树右表相关组件及功能实现 3 weeks ago
.gitignore bf1e6543fd ♻️ 重构 config.json 1 year ago
CLAUDE.md 905687f854 refactor(rules): 删除不再使用的模板规则文件,优化项目结构 1 month ago
LICENSE 20067c3bee Initial commit 2 years ago
README.md 97baf96247 feat(treeTable): 新增左树右表相关组件及功能实现 3 weeks ago
VERSION 905687f854 refactor(rules): 删除不再使用的模板规则文件,优化项目结构 1 month ago
config.json 97baf96247 feat(treeTable): 新增左树右表相关组件及功能实现 3 weeks ago

README.md

代码生成原理

当开发者选中某张表进行代码生成时,如下图所示,首先会注入 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 模板中直接使用相关语法进行取值。

模板基本属性

Key Description
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 主键字段

模板字段属性

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

环境判断属性

Key Description
isSpringBoot3 是否是 springboot3
isTenant 是否支持多租户

左树右表模板约定

新增模板组:左树右表增删改查

该模板组用于生成“左侧树节点 + 右侧主表”的标准 CRUD 页面,关系方向为:

  • 左侧树使用子表元信息
  • 右侧列表和表单使用主表元信息
  • 左树内部层级关系使用 parentField
  • 主表通过 childField 指向左树节点主键

变量来源

右侧主表继续使用现有主表变量:

  • fieldList
  • formList
  • gridList
  • queryList
  • pk
  • ClassName
  • className

左侧树继续复用主子表变量:

  • childFieldList
  • childTableName
  • ChildClassName
  • childClassName

新增约定

左树子表还需要额外提供两个字段约定:

  • parentField:树节点父级字段
  • nameField:树节点显示名称字段

主表与左树关联继续复用现有变量:

  • childField:主表中关联左树节点的外键字段

页面行为

  • 页面初始化时,左树加载全部节点,右表默认展示全部数据
  • 选中左树节点后,右表按 childField 过滤
  • 删除左树节点时,只允许删除没有子节点且没有关联主表数据的空节点