一键生成20个MySQL表的CRUD API代码并无缝集成到Golang Web服务中
一键生成20个MySQL表的CRUD API代码并无缝集成到Golang Web服务中 借助代码生成工具 sponge,在此处下载 https://github.com/zhufuyi/sponge
(1) 创建 Web 服务
执行命令生成 Web 服务代码,生成的代码可用于生产环境中的实际项目。
sponge web http \
--module-name=edusys \
--server-name=edusys \
--project-name=edusys \
--db-dsn=root:123456@(192.168.3.37:3306)/edusys \
--db-table=user \
--out=./edusys
(2) 批量添加 CRUD 接口
将 20 个 MySQL 表的 CRUD 接口代码添加到 Web 服务中,执行以下命令。
sponge web handler \
--db-dsn=root:123456@(127.0.0.1:3306)/school \
--db-table=填写 MySQL 表名,多个表名用逗号分隔 \
--out=./edusys
每个 MySQL 表对应 7 个与 CRUD 相关的接口,总共生成 140 个接口,支持分页、过滤、排序和模糊查询。
(3) 启动服务
# 生成 swagger 文档
make docs
# 启动服务
make run
启动服务后,您可以在 swagger 上测试这 140 个接口。
更多关于一键生成20个MySQL表的CRUD API代码并无缝集成到Golang Web服务中的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于一键生成20个MySQL表的CRUD API代码并无缝集成到Golang Web服务中的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用 sponge 生成 MySQL 表的 CRUD API 并集成到 Golang Web 服务中,可以显著提升开发效率。以下是具体步骤和示例代码:
1. 创建 Web 服务
执行以下命令生成 Web 服务基础代码,该代码已包含生产级配置(如日志、配置管理、数据库连接等):
sponge web http \
--module-name=edusys \
--server-name=edusys \
--project-name=edusys \
--db-dsn="root:123456@(192.168.3.37:3306)/edusys" \
--db-table=user \
--out=./edusys
生成的文件结构示例:
edusys/
├── cmd/
│ └── edusys/
│ └── main.go # 服务入口
├── internal/
│ ├── config/ # 配置解析
│ ├── dao/ # 数据库操作(已包含user表)
│ ├── model/ # 数据模型
│ └── server/ # HTTP服务
└── Makefile # 构建命令
2. 批量添加20个表的CRUD接口
假设数据库 school 中存在表 student, teacher, course 等20个表,执行:
sponge web handler \
--db-dsn="root:123456@(127.0.0.1:3306)/school" \
--db-table="student,teacher,course,class,score,attendance,homework,exam,schedule,major,department,library,equipment,dormitory,cafeteria,activity,notification,payment,report,config" \
--out=./edusys
每个表会自动生成7个CRUD接口方法,对应代码示例(以 student 表为例):
// internal/handler/student.go 部分生成代码
func (h *studentHandler) Create(c *gin.Context) {
req := &CreateStudentRequest{}
if err := c.ShouldBindJSON(req); err != nil {
response.Error(c, err)
return
}
err := h.logic.Create(c.Request.Context(), req)
if err != nil {
response.Error(c, err)
return
}
response.Success(c)
}
// internal/logic/student.go 中的逻辑层代码
func (l *studentLogic) Create(ctx context.Context, req *CreateStudentRequest) error {
student := &model.Student{
Name: req.Name,
Age: req.Age,
Gender: req.Gender,
}
return l.dao.CreateStudent(ctx, student)
}
3. 启动服务并测试
# 进入项目目录
cd edusys
# 生成Swagger文档(依赖go-swagger)
make docs
# 编译并启动服务(默认端口:8080)
make run
服务启动后,访问 http://localhost:8080/swagger/index.html 可查看140个自动生成的API接口(20表 × 7接口),包含:
POST /api/v1/student创建学生DELETE /api/v1/student/{id}删除学生PUT /api/v1/student/{id}更新学生GET /api/v1/student/{id}获取学生详情GET /api/v1/student分页列表(支持条件过滤)GET /api/v1/student/list全量列表POST /api/v1/student/condition动态条件查询
分页查询示例(Swagger测试):
// GET /api/v1/student?page=1&size=10&name=张三&orderBy=id_desc
{
"total": 150,
"list": [
{
"id": 1,
"name": "张三",
"age": 20,
"gender": 1
}
]
}
注意事项
- 确保MySQL表具有主键(默认识别
id字段) - 表名字段会自动转换为驼峰命名(如
created_at→CreatedAt) - 生成代码已包含输入验证、错误处理和日志记录
- 支持自定义扩展,可在生成的
logic层添加业务逻辑
通过以上步骤,20个表的CRUD API可在5分钟内生成并集成到Web服务中,无需手动编写重复代码。

