学习完了查询(select)操作,我们就要接受另一种操作方法,增加了(insert)。其实,在上一次的数据库中,我们也用到了增加的方式,但这一次,我们将会用go实现对数据库的增加。
增加(insert)
本次实验的目的在于向表格中增加新的内容。
处理数据库
本次实验前,数据库如图所示:
在增加之后,我们需要注意返回值。
本次由于id是自动生成的,不是前端传递的,因此不写SQL代码。
确定Service层
我按照一位队友的建议,使用body类型进行传参,因此service接收到的是一个结构体。
// 往评论表里插入内容:
func AddComment(comment Entity.CommentEntity) string {
//在这里不能手动规定id
CommentDbService.Db.Create(&comment)
return comment.CommentId
}
确定Controller层
代码如下:
func AddComment(c *gin.Context) {
var req AddCommentRequest
// 解析请求体中的 JSON 数据
if err := c.ShouldBindJSON(&req); err != nil {
// 处理解析错误
ApiState.ArgErrApiResult(c, err.Error())
return
}
if req.VideoID == 0 {
ApiState.ArgErrApiResult(c, "VideoId")
return
}
// 创建 CommentEntity 对象
com := Entity.CommentEntity{
CommentId: UtilService.UUId(),
UserId: req.UserID,
VideoId: req.VideoID,
Content: req.Content,
Calendar: req.Calendar,
}
// 调用 CommentService 的 AddComment 函数
CommentService.AddComment(com)
// 返回响应
ApiState.ResponseSuccess(c, "注册成功")
}
- body传参的重点在于JSON字符串的转化。
UtilService.UUId()是用于生成随机字符串的。
设置路径
本次的路径设置就简单了,详情可见上一篇笔记,此处省略。 首先找到Routers:
func Init(router *gin.Engine) {
comment := router.Group("Comment") //这看情况改成douyin
router.RedirectFixedPath = true
{
comment.POST("/douyin/comment/action", CommentController.AddComment)
}
serverConfig := ConfigService.GetServerConfig()
router.Run(serverConfig.HTTP_PORT) // 监听并在 127.0.0.1:8888 上启动服务
}
要注意,POST,GET这类需要传递的两个参数一个也不能少,否则访问成功但没连上数据库。
path:http://localhost:9180/Comment/douyin/comment/action
检验插入
传参方式在postman中选择body:
此外,需要注意的是JSON中代表属性的字段和Entity中是一样的,而不是和带_的数据库中一样。
数据库如下所示: