一键生成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

1 回复

更多关于一键生成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_atCreatedAt
  • 生成代码已包含输入验证、错误处理和日志记录
  • 支持自定义扩展,可在生成的 logic 层添加业务逻辑

通过以上步骤,20个表的CRUD API可在5分钟内生成并集成到Web服务中,无需手动编写重复代码。

回到顶部