当前位置: 首页 > news >正文

Goweb---Gorm操作数据库(三) 更新

1.表结构

在这里插入图片描述

2.表初始数据(只是我的)

在这里插入图片描述

3.保存操作

保存 是一个组合函数。 如果保存值不包含主键,它将执行 Create,否则它将执行 Update (包含所有字段)。

3.1 语句1 :db.Save(&User{Name: “jinzhu”, Age: 100})

上面的语句相当于:

 INSERT INTO `users` (`name`,`age`,`birthday`) VALUES ("jinzhu",100,"0000-00-00 00:00:00");

代码:

package mainimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm"
)type User struct {ID       int    `gorm:"column:id"`Name     string `gorm:"column:name"`Age      int    `gorm:"column:age"`Birthday string `gorm:"column:birthday"`
}func main() {dsn := "root:828924@tcp(127.0.0.1:3306)/user?charset=utf8mb4&parseTime=True&loc=Local"db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {fmt.Println("连接数据库失败:", err)}db.Save(&User{Name: "jinzhu", Age: 100})}

结果:
在这里插入图片描述

上面的语句若改为
db.Save(&User{ID: 1, Name: “jinzhu”, Age: 100})
由于有了主键,因此会更新表中主键ID为1的字段,也就是相当于执行下面的语句:
UPDATE users SET name=“jinzhu”,age=100,birthday=“0000-00-00 00:00:00” WHERE `id’ = 1

4.更新操作
4.1更新单个列

当使用 Update 更新单列时,需要有一些条件,否则将会引起ErrMissingWhereClause 错误,查看 阻止全局更新 了解详情。 当使用 Model 方法,并且它有主键值时,主键将会被用于构建条件

下面的图片都是一个操作对应一个效果
在这里插入图片描述

在这里插入图片描述

测试代码
package mainimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm"
)type User struct {ID       int    `gorm:"column:id"`Name     string `gorm:"column:name"`Age      int    `gorm:"column:age"`Birthday string `gorm:"column:birthday"`
}func main() {dsn := "root:828924@tcp(127.0.0.1:3306)/user?charset=utf8mb4&parseTime=True&loc=Local"db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {fmt.Println("连接数据库失败:", err)}// 根据条件更新//db.Model(&User{}).Where("age = ?", 18).Update("age", 30)// UPDATE users SET age=30  WHERE age=18;var user Useruser.ID = 2db.Model(&user).Update("age", 40)}
4.2 更新选定字段

db.Model(&user).Select(“name”).Updates(map[string]interface{}{“name”: “hello”, “age”: 18})

在这里插入图片描述

db.Model(&user).Omit(“name”).Updates(map[string]interface{}{“name”: “Tom”, “age”: 66})

在这里插入图片描述

db.Model(&user).Where(“id = ?”, 0).Select(“*”).Updates(User{ID: 1, Name: “jinzhu”, Age: 0})

在这里插入图片描述

测试代码
package mainimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm"
)type User struct {ID       int    `gorm:"column:id"`Name     string `gorm:"column:name"`Age      int    `gorm:"column:age"`Birthday string `gorm:"column:birthday"`
}func main() {dsn := "root:828924@tcp(127.0.0.1:3306)/user?charset=utf8mb4&parseTime=True&loc=Local"db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {fmt.Println("连接数据库失败:", err)}var user User// 选择 Map 的字段// User 的 ID 是 `2`://db.Model(&user).Select("name").Updates(map[string]interface{}{"name": "hello", "age": 18})// UPDATE users SET name='hello' WHERE id=2;//db.Model(&user).Omit("name").Updates(map[string]interface{}{"name": "Tom", "age": 66})// UPDATE users SET age=66 WHERE id=2;// 选择所有字段(选择包括零值字段的所有字段)db.Model(&user).Where("id = ?", 0).Select("*").Updates(User{ID: 1, Name: "jinzhu", Age: 0})}

http://www.mrgr.cn/news/36827.html

相关文章:

  • Linux设备驱动中的异步通知与异步I/O学习s
  • 基于vue框架的大学生国内外竞赛参赛管理系统开发设计与实现xs3sb(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • shell中对xargs命令传参进行编辑
  • 天命人,如何轻松利用仿真技术打造出属于你的“金箍棒”?
  • 前端插件开发用什么技术比较好,用来程序自动化下载
  • 微服务架构拆分策略与实践
  • git的远程操作-把自己的代码推上去和把别人的代码拉下来
  • 人工智能下的GIS发展趋势
  • GUI-文本和按钮控件
  • leetcode 2024.9.26
  • 神经网络介绍及其在Python中的应用(一)
  • 19.1 使用k8s的sdk编写一个项目获取pod和node信息
  • 小红书,努力成为小红书
  • UCS与Unicode:二虎相争,必有一伤?
  • 数字化AI直播革命:无人直播新纪元,真AI赋能未来!
  • 如何在 Android 中用 Kotlin 将 dp 转换为 px
  • Unity网络开发记录(一):实现最简单的unity客户端和服务器通信
  • Spring Boot框架在甘肃非遗文化网站设计中的运用
  • DCGAN生成人脸图片
  • (已解决)torch.load的时候发生错误ModuleNotFoundError: No module named ‘models‘