代码生成器用于根据 SQL 文件快速生成 model 与 repository 基础代码。
入口文件:
command/codegen/handler.go
默认 SQL 输入目录:
bin/data/sql
默认输出目录:
- model:
app/model - repository:
app/repository
- Go
1.24.x - SQL 表结构文件位于
bin/data/sql
按单表生成:
go run ./command/codegen/handler.go -name auth_app按目录全量生成:
go run ./command/codegen/handler.go生成单个 PostgreSQL SQL 文件:
go run ./command/codegen/handler.go -dialect=postgres -sql bin/data/sql/postgres -name oauth_app自定义路径生成:
go run ./command/codegen/handler.go -sql custom/sql -model custom/model -repo custom/repo| 参数 | 说明 |
|---|---|
-name |
SQL 文件名(不含 .sql) |
-sql |
SQL 输入目录 |
-model |
model 输出目录 |
-repo |
repository 输出目录 |
-service |
service 输出目录(取决于生成器版本) |
-force |
覆盖已存在文件 |
- 使用标准 MySQL
CREATE TABLE语句。 - 建议保留表注释与字段注释,便于生成可读代码注释。
- SQL 文件名建议与目标模块命名保持一致。
示例:
CREATE TABLE `users` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_name` varchar(64) NOT NULL COMMENT '用户名',
`email` varchar(128) DEFAULT NULL COMMENT '邮箱',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';典型输出:
app/model/<module>/下的 model 文件app/repository/<module>/下的 repository 文件
生成内容通常包括:
- 带 tag 的结构体字段
- 基础 CRUD helper
- repository 接口与实现骨架
生成完成后仍需手工完成:
- service 逻辑接线(
app/service/...) - controller 处理器编写(
app/http/controller/...) - router 注册(
app/http/router/...) - 测试补齐
- 若行为用户可见,更新文档与错误码/i18n 映射
Repository 层优先调用 model helper。
直接 db.WithContext(ctx)... 仅建议用于:
- 事务
- model helper 覆盖不到的查询场景(
Select、Pluck、Joins)
至少执行:
gofmt -w .
go test ./...中大改动建议:
go test -race ./...