后端实践:使用GORM对数据库进行增删改查(四)增|青训营;

43 阅读2分钟

学习完了查询(select)操作,我们就要接受另一种操作方法,增加了(insert)。其实,在上一次的数据库中,我们也用到了增加的方式,但这一次,我们将会用go实现对数据库的增加。

增加(insert)

本次实验的目的在于向表格中增加新的内容。

处理数据库

本次实验前,数据库如图所示:

1692009426518.png 在增加之后,我们需要注意返回值。 本次由于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, "注册成功")
}
  1. body传参的重点在于JSON字符串的转化。
  2. 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:

1692009856975.png

此外,需要注意的是JSON中代表属性的字段和Entity中是一样的,而不是和带_的数据库中一样。 数据库如下所示:

1692010063881.png