跳到主要内容

代码生成器使用

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与扩展
  8. 使用指南
  9. 模板定制
  10. 故障排查
  11. 结论

简介

本指南面向 yudao-cloud 项目的“代码生成器”,帮助开发者从数据库表快速生成前后端一体化的 CRUD 代码。生成器支持:

  • 前端技术栈:Vue2(Element UI)、Vue3(Element Plus)、Vue3(Vben)
  • 后端框架:Spring Boot(基于 yudao 框架)
  • 数据库类型:通过数据库连接配置支持多种数据库(MySQL、Oracle、PostgreSQL 等)

生成器提供 Web 控制台接口,可直接预览或打包下载生成的代码,覆盖后端 Java 模块与前端页面/接口文件。

项目结构

与代码生成器相关的关键模块与文件:

  • 控制层:CodegenController 提供 REST 接口,支持数据库表查询、表/字段定义管理、预览与下载
  • 服务层:CodegenService/Impl 负责业务编排,调用数据库服务与代码生成引擎
  • 引擎层:CodegenEngine 基于 Velocity 模板引擎渲染,输出后端 Java 与前端代码
  • 枚举与配置:前端类型、模板类型、默认配置等
  • 前端仓库:yudao-ui-admin-vue2、yudao-ui-admin-vue3、yudao-ui-admin-vben

Mermaid Diagram Code:

graph TB
subgraph "控制层"
C["CodegenController"]
end
subgraph "服务层"
S["CodegenServiceImpl"]
IFace["CodegenService 接口"]
end
subgraph "引擎层"
E["CodegenEngine"]
end
subgraph "配置与枚举"
P["CodegenProperties"]
F["CodegenFrontTypeEnum"]
T["CodegenTemplateTypeEnum"]
end
subgraph "前端仓库"
V2["yudao-ui-admin-vue2"]
V3["yudao-ui-admin-vue3"]
VB["yudao-ui-admin-vben"]
end
C --> S
S --> E
S --> IFace
E --> P
E --> F
E --> T
E --> V2
E --> V3
E --> VB

图表来源

章节来源

核心组件

  • CodegenController:提供数据库表查询、表/字段定义管理、预览与下载接口
  • CodegenService/Impl:负责创建/更新/同步/删除表定义,调用引擎生成代码
  • CodegenEngine:模板引擎与路径映射,生成后端 Java 与前端代码
  • CodegenProperties:基础包、数据库 schema、前端类型、是否生成单元测试等全局配置
  • 枚举:前端类型(Vue2/Vue3/Vben)、模板类型(单表/树表/主子表)

章节来源

架构总览

生成器工作流概览:Web 控制台调用服务层,服务层根据数据库表结构构建表/字段定义,再交由引擎层渲染模板并输出代码,最终支持预览与打包下载。

Mermaid Diagram Code:

sequenceDiagram
participant U as "用户"
participant C as "CodegenController"
participant S as "CodegenServiceImpl"
participant E as "CodegenEngine"
U->>C : "请求预览/下载某表的代码"
C->>S : "generationCodes(tableId)"
S->>E : "execute(table, columns, subTables, subColumnsList)"
E-->>S : "Map<文件路径, 代码内容>"
S-->>C : "返回生成结果"
C-->>U : "预览或下载 ZIP"

图表来源

详细组件分析

控制层:CodegenController

  • 提供数据库表查询、表/字段定义管理、预览与下载接口
  • 下载接口将生成的代码打包为 ZIP 并输出

章节来源

服务层:CodegenService/Impl

  • 创建/更新/同步/删除表定义
  • 校验表与字段注释完整性
  • 调用数据库服务获取表结构,构建表/字段对象并持久化
  • 调用引擎生成代码并返回结果

章节来源

引擎层:CodegenEngine

  • 模板映射:后端 Java 与前端模板分别定义映射规则
  • 路径格式化:根据绑定上下文动态替换占位符
  • 代码美化:对前端模板渲染结果进行格式化处理
  • 主子表/树表分支:按模板类型选择性生成

章节来源

配置与枚举

  • CodegenProperties:基础包、数据库 schema、前端类型、是否生成单元测试
  • CodegenFrontTypeEnum:前端类型枚举(Vue2/Vue3/Vben)
  • CodegenTemplateTypeEnum:模板类型枚举(单表/树表/主子表)

章节来源

依赖关系分析

  • 控制层依赖服务层;服务层依赖数据库服务、引擎、配置与枚举
  • 引擎层依赖模板引擎与配置,输出后端与前端代码路径
  • 前端仓库与生成路径一一对应,确保生成代码落盘到正确目录

Mermaid Diagram Code:

graph LR
C["CodegenController"] --> S["CodegenServiceImpl"]
S --> DB["DatabaseTableService"]
S --> E["CodegenEngine"]
E --> P["CodegenProperties"]
E --> F["CodegenFrontTypeEnum"]
E --> T["CodegenTemplateTypeEnum"]
E --> FE1["yudao-ui-admin-vue2"]
E --> FE2["yudao-ui-admin-vue3"]
E --> FE3["yudao-ui-admin-vben"]

图表来源

性能与扩展

  • 模板渲染:使用 Velocity 模板引擎,按需生成,避免冗余类生成(如树表/普通表的 VO)
  • 代码美化:对前端渲染结果进行格式化,减少后续格式化压力
  • 单元测试开关:可通过配置关闭单元测试模板,减少生成量
  • 主子表/树表分支:按模板类型选择性生成,降低无用代码

章节来源

使用指南

一、准备阶段

  • 确保已配置数据库连接(数据源配置 ID),并具备目标表的访问权限
  • 确认 yudao-ui 前端仓库(Vue2/Vue3/Vben)与后端工程在同一工作区,以便生成代码正确落盘

章节来源

二、创建表定义

  • 通过“数据库表列表”接口获取可导入的表
  • 调用“批量创建表定义”接口,传入数据源配置 ID 与表名集合

章节来源

三、配置与生成

  • 在配置中设置基础包、数据库 schema、前端类型、是否生成单元测试
  • 选择模板类型:单表、树表或主子表
  • 预览生成代码,确认无误后下载 ZIP

章节来源

四、后续处理

  • 代码格式化:生成的 Java 代码由引擎统一美化;前端代码遵循模板格式
  • 依赖注入:生成的后端代码位于 yudao-module-{module}-{biz|api}/src/main/java/{basePackage}/module/{module}/...
  • 接口完善:根据实际业务补充鉴权、校验、异常处理等

章节来源

五、使用示例(从数据库表到完整 CRUD)

  • 步骤 1:获取数据库表列表
    • 请求:GET /infra/codegen/db/table/list?dataSourceConfigId=1&name=&comment=
    • 返回:可用表列表(未导入的表)
  • 步骤 2:批量创建表定义
    • 请求:POST /infra/codegen/create-list
    • Body:包含数据源配置 ID 与表名数组
  • 步骤 3:预览生成代码
    • 请求:GET /infra/codegen/preview?tableId={id}
    • 返回:文件路径与代码内容列表
  • 步骤 4:下载生成代码
    • 请求:GET /infra/codegen/download?tableId={id}
    • 结果:下载 ZIP 包,解压至对应 yudao-ui 与 yudao-module 工程

章节来源

模板定制

一、模板位置与映射

  • 后端模板:位于 resources/codegen/java/*.vm
  • 前端模板:位于 resources/codegen/vue*.vm
  • 路径映射:引擎根据绑定上下文动态替换 ${basePackage}${table.moduleName}${table.businessName}${table.className}

章节来源

二、字段映射与特殊类型处理

  • 绑定上下文:table、columns、primaryColumn、sceneEnum、simpleClassName 等
  • 树表/主子表:通过模板类型区分,按需生成 VO、Mapper、Controller 等
  • 代码美化:对前端模板渲染结果进行逗号、字典、ref 等格式化处理

章节来源

三、模板验证与示例

  • 单元测试覆盖 Vue2/Vue3 的标准模板与树表/主子表场景
  • 可参考测试用例中的断言与生成路径,确保模板改动后行为符合预期

章节来源

故障排查

  • 表或字段注释为空:导入时会抛出异常,需补齐注释
  • 表不存在或字段不存在:生成前会校验表与字段定义
  • 下载失败:确认生成结果非空,ZIP 构建与响应头设置正常

章节来源

结论

yudao-cloud 代码生成器以清晰的分层架构与完善的模板体系,实现了从数据库表到前后端一体化代码的高效产出。通过合理配置与模板定制,可快速落地标准 CRUD 与复杂业务场景(树表、主子表)。建议在生成后结合团队规范进行二次完善与优化。

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答