Skip to content

10.1 概述与架构 ​

概述

代码生成器内省数据库表结构,一键产出后端四件套、前端页面与 API 模块,并完成菜单创建、字典初始化与路由声明块追加。CLI(cmd/gen)与 Web 界面(tool/generator)双入口,共享同一生成引擎。

生成流水线 ​

text
① 内省表结构(表/列/索引/注释 → 生成模型)
        ↓
② 模板渲染(templates/*.tpl + 表模型 → 产物文本)
        ↓
③ 幂等落盘(generator.overwrite 控制覆盖/跳过)
        ↓
④ 副作用(幂等创建菜单行 + 字典初始化 + router.go 追加 Bind 声明块)

产物清单 ​

类别内容
后端四件套internal/model/dto、repository、service、handler 下 {模块}.go
路由声明router.go 的 Bind 声明块(自动追加)
前端api 模块 + views 页面(index/edit/detail/columns/querySchemas;树形表走 ui2 模板)
菜单页面菜单 + 权限节点(幂等创建,挂 generator.parentMenuId)
字典按枚举列初始化字典与字典项

两个入口 ​

入口场景说明
CLI(make gen)本地开发、批处理`go run ./cmd/gen -tables "表名
Web(tool/generator)可视化挑选表、预览后生成内置表列表查询、代码预览、批量生成

覆盖策略 ​

generator.overwrite:

  • true:全部产物覆盖重新生成(模板变更后同步)
  • false:缺失补生成、存在跳过(保护手写内容,默认安全档)

生成结果分类呈现:generated(新建)/ skipped(跳过)/ overwritten(覆盖)/ failed(失败)。

安全开关 ​

生成器具备写服务器源码能力——generator.enable=false 时路由整体不注册;生产模式(app.prod=true)拒绝未关闭的生成器。

学习建议 ​

先读 第 3 章 模块开发实战 理解手工四件套,再回来用生成器——你能看懂每一行产物,也知道改哪里。

下一步 ​

→ 10.2 CLI 命令行使用

小蚂蚁云团队 · 提供技术支持