数据库 CRUD 操作
2025/5/14大约 2 分钟commonCRUD代码生成
生成 DAO CRUD 代码
生成代码
在 sponge 的 UI 界面:
- 点击左边菜单栏【Public】 → 【生成 DAO CRUD 代码】;
- 选择数据库(例如 mysql),填写
数据库 dsn
,然后点击按钮获取表名
,选择表名(可多选); - 填写其他参数,鼠标放在问号
?
位置可以查看参数说明。
填写完参数后,点击按钮下载代码
生成 DAO CRUD 代码,如下图所示:

等价命令
# 完整命令
sponge web dao --module-name=user --db-driver=mysql --db-dsn="root:123456@(192.168.3.37:3306)/school" --db-table=teach
# 简化命令(使用 --out 指定服务代码目录,生成代码自动合并到指定服务目录)
sponge web dao --db-driver=mysql --db-dsn="root:123456@(192.168.3.37:3306)/school" --db-table=teach --out=user
代码目录结构
生成的 DAO CRUD 代码包含以下目录:
.
└─ internal
├─ cache # 缓存相关代码
├─ dao # 数据访问对象
└─ model # 数据模型
代码集成说明
集成步骤
- 解压生成的代码包
- 将
internal
目录移动到目标服务(web 或 gRPC)代码根目录
注意事项
- 如遇冲突提示,说明已为相同表生成过 DAO 代码,可忽略覆盖
使用 DAO CRUD 代码
Web 服务调用方式
文件位置:internal/handler/
- 基于 SQL 创建的服务:
<表名>.go
- 基于 Protobuf 创建的服务:
<proto 文件名>.go
参考示例:
type userHandler struct {
userDao dao.UserDao // 注入 DAO 接口
}
func NewUserHandler() UserHandler {
return &userHandler{
userDao: dao.NewUserDao(database.GetDB(), nil) // 初始化 DAO 接口
}
}
// 调用 CRUD 方法操作数据库。
gRPC 服务调用方式
文件位置:internal/service/
- 基于 SQL 创建的服务:
<表名>.go
- 基于 Protobuf 创建的服务:
<proto 文件名>.go
参考示例:
type user struct {
userV1.UnimplementedUserServer
userDao dao.UserDao // 注入 DAO 接口
}
func NewUserServer() userV1.UserServer {
return &user{
userDao: dao.NewUserDao(database.GetDB(), nil) // 初始化 DAO 接口
}
}
// 调用 CRUD 方法操作数据库。