代码生成(单表)
代码生成器用于从数据库表结构生成后端 Controller、VO、Service、Mapper、DO、SQL、前端 API 和页面代码。管理端入口位于 apps/web-antd/src/views/infra/codegen,后端接口由 CodegenController 提供,生成引擎位于 CodegenBuilder 与 CodegenEngine。
单表生成流程
核心接口
| 操作 | 接口 |
|---|---|
| 查询数据库表 | /infra/codegen/db/table/page、/infra/codegen/db/table/list |
| 导入表 | POST /infra/codegen/create-list |
| 配置分页 | GET /infra/codegen/table/page |
| 配置详情 | GET /infra/codegen/detail?tableId= |
| 更新配置 | PUT /infra/codegen/update |
| 同步数据库 | PUT /infra/codegen/sync-from-db |
| 预览代码 | GET /infra/codegen/preview |
| 下载代码 | GET /infra/codegen/download |
生成内容
单表模式会生成常见 CRUD 所需文件:
- 后端:Controller、ReqVO/RespVO、DO、Mapper、Mapper XML、Service、ServiceImpl、错误码 SQL。
- 前端:API、列表页、表单页或 Vben5 schema/general 页面。
- SQL:菜单、权限、H2 测试数据等模板。
- 单元测试:在启用单测模板时生成 ServiceImplTest。
字段默认推断
CodegenBuilder 会根据字段名后缀推断筛选条件和表单组件:
| 规则 | 示例 | 默认行为 |
|---|---|---|
name 结尾 | userName | 列表条件使用 LIKE |
time/date 结尾 | createTime | 列表条件使用 BETWEEN,组件使用 datetime |
status/sex | status | 表单组件使用 radio |
type | orderType | 表单组件使用 select |
image/file | coverImage | 使用上传组件 |
content/description | content | 使用富文本/编辑器 |
落地建议
- 先建好表注释和字段注释:类名、字段名、Swagger 示例都依赖注释质量。
- 生成前检查日期字段:本项目
LocalDateTime前端通常使用时间戳valueFormat: 'x',必要时手工调整生成结果。 - 不要直接覆盖现有业务代码:下载 zip 后先 diff,再合并到目标模块。
- 菜单权限需二次确认:生成 SQL 只是初稿,父菜单、权限标识和排序要按产品菜单规划调整。
验证清单
| 阶段 | 检查项 |
|---|---|
| 后端 | Maven 编译、权限注解、租户/数据权限、VO 校验 |
| 前端 | pnpm check:type、lint、列表查询、弹窗保存 |
| SQL | 菜单、权限、字典、父菜单、租户初始化 |
| 业务 | 新增、编辑、删除、导出、分页、筛选 |
