gorm save和update区别
时间: 2023-06-15 09:03:13 浏览: 520
Save
和 Update
都是 GORM 操作数据库的方法,但是它们之间有一些区别。
Save
方法用于插入一条新的记录或更新一条记录。如果传入的对象没有指定主键,那么 Save
方法会插入一条新纪录,否则会更新已有记录。如果该记录不存在,则插入一条新记录;如果该记录已存在,则更新该记录。如果你要更新某个字段的值,可以先查询出来,然后再修改,最后使用 Save
方法保存到数据库中。
例如:
// 新增一条记录
user := User{Name: "foo", Age: 18}
db.Save(&user)
// 更新记录
user.Age = 20
db.Save(&user)
Update
方法用于更新一条或多条记录。它接受一个 map 类型的参数,用于指定需要更新的字段和对应的值,然后根据指定的条件进行更新。如果没有指定条件,则会更新表中的所有记录。
例如:
// 更新一条记录
db.Model(&User{}).Where("id = ?", 1).Update("age", 20)
// 更新多条记录
db.Model(&User{}).Where("age < ?", 18).Update("age", 18)
需要注意的是,Update
方法只更新指定的字段,并且不会更新主键和自动更新的字段(如创建时间和更新时间等)。如果需要更新多个字段,可以传入一个 map 类型的参数。
综上所述,Save
和 Update
方法的区别在于,Save
方法既可以插入新记录,也可以更新已有记录,而 Update
方法只能更新已有记录,并且只能更新指定的字段。
相关推荐



















