Gorm之增删改查
# GORM的增删改查
有一个user表如下:

初始化表:
//Gorm mysql初始化详见《Gorm初始化》
//model.go
type User struct { //默认表名是users
Id int
Username string
Age int
Email string
AddTime int
}
// 配置操作数据库表名称
func (User) TableName() string {
return "user"
}
//controller.go
// 控制器继承
type UserController struct {
BaseController
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 1、查
func (con UserController) Index(c *gin.Context) {
//查询全部数据
userList := []models.User{} //创建切片
models.DB.Find(&userList) //Find查询所有
c.JSON(http.StatusOK, gin.H{
"result": userList,
}) //输出json格式
}
func (con NavController) Detail(c *gin.Context) {
//查询单条数据
//写法1:
//userResult := models.User{Id: 1}
//写法2:
userResult := models.User{}
models.DB.Where("id=?", 1).Find(&userResult) //先写条件Where 再写查询Find
c.JSON(http.StatusOK, gin.H{
"result": userResult,
})
}//输出json格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 2、增
func (con UserController) Add(c *gin.Context) {
user := models.User{
Username: "itying",
Age: 22,
Email: "itying@gmail.com",
AddTime: int(models.GetUnix()),
} //增加的信息格式
models.DB.Create(&user) //create创建插入
fmt.Println(user) //打印插入数据信息
//还有一种方法是使用原始sql(models.DB.Exec 执行insert sql语句),但是太冗长了,算了知道就行[狗头]
c.String(http.StatusOK, "增加数据成功!")
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
增加数据成功!
# 3、改
func (con UserController) Update(c *gin.Context) {
//保存所有字段
//方式1:优选
//user := models.User{Id: 7}
//models.DB.Find(&user)
//user.Username = "hahaha"
//models.DB.Save(&user)
//方式2:
//user := models.User{}
//models.DB.Model(&user).Where("id=?", 7).Update("username", "itying")
//方式3:
models.DB.Exec("update user set age=? where id=?", 20, 1)
c.String(http.StatusOK, "修改数据成功!")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
修改数据成功!
# 4、删
func (con UserController) Delete(c *gin.Context) {
//方法1:
//user := models.User{Id: 7}
//models.DB.Delete(&user)
//方法2:
models.DB.Exec("DELETE FROM user WHERE id=?", 5)
c.String(http.StatusOK, "删除数据成功!")
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
删除数据成功!
编辑 (opens new window)