代码生成器使用
引用文件
本文引用的文件
- CodegenService.java
- CodegenServiceImpl.java
- CodegenEngine.java
- CodegenController.java
- CodegenFrontTypeEnum.java
- CodegenTemplateTypeEnum.java
- CodegenProperties.java
- CodegenEngineVue2Test.java
- CodegenEngineVue3Test.java
- yudao-ui-admin-vue2/README.md
- yudao-ui-admin-vue3/README.md
- yudao-ui-admin-vben/README.md
目录
简介
本指南面向 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
图表来源
- CodegenController.java
- CodegenServiceImpl.java
- CodegenEngine.java
- CodegenProperties.java
- CodegenFrontTypeEnum.java
- CodegenTemplateTypeEnum.java
章节来源
- CodegenController.java
- CodegenServiceImpl.java
- CodegenEngine.java
- CodegenProperties.java
- CodegenFrontTypeEnum.java
- CodegenTemplateTypeEnum.java
核心组件
- CodegenController:提供数据库表查询、表/字段定义管理、预览与下载接口
- CodegenService/Impl:负责创建/更新/同步/删除表定义,调用引擎生成代码
- CodegenEngine:模板引擎与路径映射,生成后端 Java 与前端代码
- CodegenProperties:基础包、数据库 schema、前端类型、是否生成单元测试等全局配置
- 枚举:前端类型(Vue2/Vue3/Vben)、模板类型(单表/树表/主子表)
章节来源
- CodegenService.java
- CodegenServiceImpl.java
- CodegenEngine.java
- CodegenProperties.java
- CodegenFrontTypeEnum.java
- CodegenTemplateTypeEnum.java
架构总览
生成器工作流概览:Web 控制台调用服务层,服务层根据数据库表结构构建表/字段定义,再交由引擎层渲染模板并输出代码,最终支持预览与打包下载。
图表来源
详细组件分析
控制层:CodegenController
- 提供数据库表查询、表/字段定义管理、预览与下载接口
- 下载接口将生成的代码打包为 ZIP 并输出
章节来源
服务层:CodegenService/Impl
- 创建/更新/同步/删除表定义
- 校验表与字段注释完整性
- 调用数据库服务获取表结构,构建表/字段对象并持久化
- 调用引擎生成代码并返回结果
章节来源
引擎层:CodegenEngine
- 模板映射:后端 Java 与前端模板分别定义映射规则
- 路径格式化:根据绑定上下文动态替换占位符
- 代码美化:对前端模板渲染结果进行格式化处理
- 主子表/树表分支:按模板类型选择性生成
章节来源
配置与枚举
- CodegenProperties:基础包、数据库 schema、前端类型、是否生成单元测试
- CodegenFrontTypeEnum:前端类型枚举(Vue2/Vue3/Vben)
- CodegenTemplateTypeEnum:模板类型枚举(单表/树表/主子表)
章节来源
依赖关系分析
- 控制层依赖服务层;服务层依赖数据库服务、引擎、配置与枚举
- 引擎层依赖模板引擎与配置,输出后端与前端代码路径
- 前端仓库与生成路径一一对应,确保生成代码落盘到正确目录
图表来源
- CodegenController.java
- CodegenServiceImpl.java
- CodegenEngine.java
- CodegenProperties.java
- CodegenFrontTypeEnum.java
- CodegenTemplateTypeEnum.java
性能与扩展
- 模板渲染:使用 Velocity 模板引擎,按需生成,避免冗余类生成(如树表/普通表的 VO)
- 代码美化:对前端渲染结果进行格式化,减少后续格式化压力
- 单元测试开关:可通过配置关闭单元测试模板,减少生成量
- 主子表/树表分支:按模板类型选择性生成,降低无用代码
章节来源
使用指南
一、准备阶段
- 确保已配置数据库连接(数据源配置 ID),并具备目标表的访问权限
- 确认 yudao-ui 前端仓库(Vue2/Vue3/Vben)与后端工程在同一工作区,以便生成代码正确落盘
章节来源
- CodegenController.java
- yudao-ui-admin-vue2/README.md
- yudao-ui-admin-vue3/README.md
- yudao-ui-admin-vben/README.md
二、创建表定义
- 通过“数据库表列表”接口获取可导入的表
- 调用“批量创建表定义”接口,传入数据源配置 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} - 返回:文件路径与代码内容列表
- 请求:GET /infra/codegen/preview?tableId=
- 步骤 4:下载生成代码
- 请求:GET /infra/codegen/download?tableId=
{id} - 结果:下载 ZIP 包,解压至对应 yudao-ui 与 yudao-module 工程
- 请求:GET /infra/codegen/download?tableId=
章节来源
模板定制
一、模板位置与映射
- 后端模板:位于 resources/codegen/java/*.vm
- 前端模板:位于 resources/codegen/vue*.vm
- 路径映射:引擎根据绑定上下文动态替换
${basePackage}、${table.moduleName}、${table.businessName}、${table.className}等
章节来源
二、字段映射与特殊类型处理
- 绑定上下文:table、columns、primaryColumn、sceneEnum、simpleClassName 等
- 树表/主子表:通过模板类型区分,按需生成 VO、Mapper、Controller 等
- 代码美化:对前端模板渲染结果进行逗号、字典、ref 等格式化处理
章节来源