GORM增删改查
时间:2022-05-11 11:47
一、增
- 单:传入实例即可
user := &User{Name: "XX"} db.Create(user)
- 列表:
users := []User{{Name: "xx"},{Name: "XX1"},{Name: "XX2"}} db.Create(&users)
- 字典
db.Model(&User{}).Create([]map[string]interface{}{{"Name": "WW" },{"Name":"WW1"}})
Create还有钩子函数:BeforeSave
、BeforeCreate
、AfterSave、AfterCreate
二、删
- 单个删除必须带ID,否则会触发批量删除
user := User{Name: "XX", ID: 1} db.Delete(&user)
id删除
db.Delete(&User{}, 2)
- 条件删除
db.Where( "name = ?" , "XX" ).Delete(&user)
- 批量删除
db.Delete(User{}, "name LIKE ?" , "%xx%" )
删除的钩子函数:
BeforeDelete
,AfterDelete
三、改
- 根据ID更改
user := User{ID: 3} db.Model(&user).Update("name", "test")
db.Model(&User{}).Where("id=?", 4).Update("name", "test2")
Model传的是实例,就可以直接操作,传的是结构体本身的话,需要再加条件之后进行操作,当然传的是实例也可以进一步过滤。
- 批量更改
db.Model(&User{}).Where("name LIKE ?", "test").Update("name", "test2")
更改的钩子函数:
BeforeSave
,BeforeUpdate
,AfterSave
,AfterUpdate
四、查
user := User{}
-
// 获取按主键排序的第一条记录
db.First(&user) -
// 获取最后一条记录,按主键排序 desc
db.Last(&user) -
根据ID查询:db.First(&user, 10 )
// SELECT * FROM users WHERE id = 10;user := User{} fmt.Print(user) db.First(&user) fmt.Print(user) //查询后的结果