跳到主要内容

代码生成相关表

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论
  10. 附录

简介

本文件聚焦于代码生成模块的表结构设计与实现,围绕“代码生成表(infra_codegen_table)”和“代码生成明细表(infra_codegen_column)”展开,详细说明关键字段定义、数据类型、约束条件与业务含义;阐述表结构设计思路、字段映射关系、模板配置与生成流程;并提供表结构图、字段说明、典型数据示例与常见操作模式,帮助开发者快速理解与使用代码生成功能。

项目结构

代码生成模块位于 yudao-module-infra 子模块中,核心文件组织如下:

  • 数据对象层:定义代码生成表与明细表的实体类(DO),用于映射数据库表结构
  • 枚举层:定义模板类型、前端类型、场景等枚举,用于控制生成行为
  • 服务层:代码生成引擎(CodegenEngine),负责模板加载、绑定变量、渲染与输出
  • 控制器层:提供基于数据库表的代码生成配置入口(如批量创建)

Mermaid Diagram Code:

graph TB
subgraph "数据对象层"
T["CodegenTableDO<br/>代码生成表实体"]
C["CodegenColumnDO<br/>代码生成明细表实体"]
end
subgraph "枚举层"
TT["CodegenTemplateTypeEnum<br/>模板类型枚举"]
FT["CodegenFrontTypeEnum<br/>前端类型枚举"]
ST["CodegenSceneEnum<br/>场景枚举"]
end
subgraph "服务层"
E["CodegenEngine<br/>代码生成引擎"]
end
subgraph "控制器层"
CT["CodegenController<br/>代码生成控制器"]
end
T --> E
C --> E
TT --> E
FT --> E
ST --> E
CT --> E

图表来源

章节来源

核心组件

  • 代码生成表(infra_codegen_table):保存一次代码生成的完整配置,包括数据源、生成场景、模块/业务/类命名、作者、模板类型、前端类型、菜单与主子表关联等
  • 代码生成明细表(infra_codegen_column):保存每个字段的生成配置,包括数据库字段信息、Java属性映射、字典类型、CRUD与UI配置等
  • 代码生成引擎(CodegenEngine):负责模板加载、变量绑定、渲染与输出,支持后端模板与前端模板两类
  • 枚举:模板类型(单表/树表/主子表)、前端类型(Vue2/Vue3/vben)、场景(管理后台/用户APP)

章节来源

架构总览

代码生成的总体流程:

  • 输入:选择数据源与数据库表,生成配置(场景、模板类型、前端类型、模块/业务/类命名、作者等)
  • 解析:从数据库读取表结构与字段元数据,映射到 CodegenTableDO 与 CodegenColumnDO
  • 渲染:根据模板类型与前端类型,匹配模板并绑定变量,渲染生成内容
  • 输出:生成后端代码(Java)与前端代码(Vue/TS),以及 SQL 脚本

Mermaid Diagram Code:

sequenceDiagram
participant U as "用户"
participant CT as "CodegenController"
participant E as "CodegenEngine"
participant DB as "数据库"
participant FS as "文件系统"
U->>CT : 提交批量生成请求
CT->>E : 触发代码生成
E->>DB : 读取表结构与字段元数据
DB-->>E : 返回表/字段信息
E->>E : 绑定模板变量与渲染
E-->>FS : 写入生成的文件
E-->>U : 返回生成结果

图表来源

详细组件分析

代码生成表(infra_codegen_table)结构

  • 作用:保存一次代码生成的完整配置,决定生成哪些文件、如何命名、放在哪个模块与业务目录下
  • 关键字段与含义:
    • id:主键
    • data_source_config_id:数据源配置编号,关联数据源配置
    • scene:生成场景(管理后台/用户APP)
    • table_name/table_comment:目标表名与注释
    • remark:备注
    • module_name/business_name/class_name/class_comment:模块名、业务名、类名(首字母大写)、类注释
    • author:作者
    • template_type:模板类型(单表/树表/主子表)
    • front_type:前端类型(Vue2/Vue3/vben)
    • parent_menu_id:父菜单编号(用于生成菜单)
    • master_table_id/sub_join_column_id/sub_join_many:主子表关联配置
    • tree_parent_column_id/tree_name_column_id:树表父子与名称字段配置
    • 基础审计字段:creator/updater/create_time/update_time/deleted

Mermaid Diagram Code:

erDiagram
CODEGEN_TABLE {
bigint id PK
bigint data_source_config_id
tinyint scene
varchar table_name
varchar table_comment
varchar remark
varchar module_name
varchar business_name
varchar class_name
varchar class_comment
varchar author
tinyint template_type
tinyint front_type
bigint parent_menu_id
bigint master_table_id
bigint sub_join_column_id
bit sub_join_many
bigint tree_parent_column_id
bigint tree_name_column_id
varchar creator
datetime create_time
varchar updater
datetime update_time
bit deleted
}

图表来源

章节来源

代码生成明细表(infra_codegen_column)结构

  • 作用:保存每个字段的生成配置,决定字段在 Java 中的类型/属性、字典类型、CRUD 与 UI 行为
  • 关键字段与含义:
    • id:主键
    • table_id:所属表编号,关联代码生成表
    • column_name/data_type/column_comment/nullable/primaryKey/ordinal_position:数据库字段信息
    • java_type/java_field:Java 类型与属性名
    • dict_type:字典类型(用于前端下拉/字典渲染)
    • example:示例值(用于生成 Swagger 注解)
    • create_operation/update_operation/list_operation/list_operation_condition/list_operation_result:CRUD 字段控制
    • html_type:UI 显示类型(输入框/选择器/日期等)

Mermaid Diagram Code:

erDiagram
CODEGEN_COLUMN {
bigint id PK
bigint table_id FK
varchar column_name
varchar data_type
varchar column_comment
bit nullable
bit primary_key
int ordinal_position
varchar java_type
varchar java_field
varchar dict_type
varchar example
bit create_operation
bit update_operation
bit list_operation
varchar list_operation_condition
bit list_operation_result
varchar html_type
varchar creator
datetime create_time
varchar updater
datetime update_time
bit deleted
}
CODEGEN_TABLE ||--o{ CODEGEN_COLUMN : "包含"

图表来源

章节来源

模板配置与生成流程

  • 模板类型(template_type):单表、树表、主表(标准/ERP/内嵌)、子表
  • 前端类型(front_type):Vue2、Vue3、Vue3 vben
  • 生成引擎(CodegenEngine):
    • 后端模板:控制器、VO、DO、Mapper、Service、测试、SQL 等
    • 前端模板:Vue 页面、API、组件(含主子表专属组件)
    • 变量绑定:全局变量(基础包、Jakarta/Javax 兼容、常用类名)、表/字段/枚举等上下文变量
    • 渲染与输出:模板渲染后格式化代码,生成文件路径与内容

Mermaid Diagram Code:

flowchart TD
Start(["开始"]) --> LoadCfg["加载生成配置<br/>模板类型/前端类型/场景"]
LoadCfg --> LoadMeta["读取表结构与字段元数据"]
LoadMeta --> BindVars["绑定模板变量<br/>全局+上下文"]
BindVars --> Render["模板渲染<br/>后端/前端模板"]
Render --> Format["代码格式化"]
Format --> Output["输出文件<br/>后端/前端/SQL"]
Output --> End(["结束"])

图表来源

章节来源

触发机制与典型数据示例

  • 触发入口:批量基于数据库表创建代码生成配置(CodegenCreateListReqVO)
  • 典型数据示例(字段示意):
    • 代码生成表:scene=管理后台、template_type=单表、front_type=Vue3、module_name=system、business_name=user、class_name=SysUser、author=admin
    • 代码生成明细表:column_name=username、java_type=String、html_type=input、create_operation=true、list_operation=true、list_operation_condition==、list_operation_result=true

章节来源

依赖分析

  • 表间依赖:代码生成明细表依赖代码生成表(外键 table_id)
  • 枚举依赖:模板类型、前端类型、场景枚举用于控制生成策略
  • 引擎依赖:模板引擎(Velocity/Hutool)用于渲染,支持多数据库方言的 SQL 输出

Mermaid Diagram Code:

graph LR
T["CodegenTableDO"] --> C["CodegenColumnDO"]
TT["CodegenTemplateTypeEnum"] --> E["CodegenEngine"]
FT["CodegenFrontTypeEnum"] --> E
ST["CodegenSceneEnum"] --> E
E --> VM["模板资源"]

图表来源

章节来源

性能考虑

  • 模板渲染:尽量减少复杂计算,将静态配置放入全局变量,避免在模板中做重型逻辑
  • 批量生成:对大量表进行批量生成时,建议分批处理,避免内存峰值过高
  • SQL 输出:针对不同数据库(MySQL/Oracle/PG/SQLServer/达梦)生成对应 SQL,注意字符集与关键字差异

故障排除指南

  • 模板加载失败:检查模板资源路径与模板引擎配置
  • 字段映射异常:核对数据库字段类型与 Java 类型映射,确保 dict_type 与字典表一致
  • 主子表生成异常:确认 master_table_id 与 sub_join_column_id 的一致性
  • 前端类型不匹配:确认 front_type 与模板目录一致(Vue2/Vue3/vben)

结论

代码生成模块通过“表配置 + 字段配置 + 模板引擎”的组合,实现了高可配置、多模板、跨数据库的自动化代码生成能力。合理设计表结构与字段映射,结合清晰的模板配置,能够显著提升开发效率与代码一致性。

附录

  • 典型数据操作模式:
    • 基于数据库表批量创建代码生成配置
    • 修改模板类型/前端类型后重新生成
    • 调整字段的 CRUD 与 UI 配置后增量更新
  • 数据库方言支持:MySQL、Oracle、PostgreSQL、SQLServer、达梦、Kingbase、DM8 等
用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答