Go语言学习之路(十一)gorm修改与新增

文章目录

    • 前言
    • 准备工作
    • 新增
    • 修改

前言

紧接上次,我们学习了gorm的一些简单和复杂的查询,那么本次,我们继续学习一下gorm框架的新增和修改操作(删除嘛,一般为逻辑删除,就不做多的赘述了)

准备工作

与我们gorm中准备工作是一致的,创建实体与数据库连接,如果不知道的话,请移步至第九章grom准备

新增

前面的连接内容我们就不在此作过多赘述,直接进入新增

// 新建实体
user := User{Username: "test", Nickname: "123"}
// 新增,这里db为连接,result是创建结果,一定要使用指针
result := db.Create(&user)

新增这里比较简单,只要没有err或者result的error没有值,则新增成功

修改

这里有一个注意事项,如果&user是一个新对象,也就是没有主键id这些值,就不会添加默认条件,否则就会在where后自动追加一个 id=‘xxx’

// 通过主键进行更新,这样会将所有字段全部更新
user.Username ="news"
db.save(&user)
// 这样相当于 update user set username = "news",nickname = "news2" where id = 1
db.Modle(&user).Updates(User{Username: "news", Nickname: "news2"})
// update user set password = '123' where username = 'test' and nickname = 'test'
db.Model(&user).Where("Username = ? and Nickname = ?", "test", "test").Update("Password", "123")
// update user set username = 'hello' where id = 'xxx'; select为指定字段更新
db.Model(&user).Select("Username").Updates(map[string]interface{}{"Username": "hello", "Nickname": "123"})
// update user set username = 'hello' and updated_at = '2024-01-12 10:00:00' where id = 'xxx'; Omit会更新除了指定字段,以及修改时间
db.Model(&user).Omit("Username").Updates(map[string]interface{}{"Username": "hello", "Nickname": "123"})
// update user set age = age + 2 where id = 'xxx'; 通过sql的表达式来更改,也可以使用函数
db.Model(&user).Update("age", gorm.Expr("age + ?", 2))

你可能感兴趣的:(go学习,golang,学习)