能够让你后悔的,从来不是你做过的事,而是你想做却没有去做的事!!!
代码已放在:https://gitee.com/hjx_RuGuoYunZhiDao/strom-huang-go
可参照文档:https://learnku.com/docs/gorm/v2/create/9732#e9dfd9

1、 引入gorm

 import ("gorm.io/driver/mysql""gorm.io/gorm""gorm.io/gorm/logger"
)

2、链接数据库

dsn := "root:root@tcp(localhost:3306)/go_test?charset=utf8mb4&parseTime=True&loc=Local"db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: newLogger,})

3、修改数据

// 条件更新 UPDATE `t_user` SET `name`='aa',`updated_at`='2022-05-13 10:19:57.743' WHERE name = 'a'db.Model(&model.TUser{}).Where("name = ?", "a").Update("name", "aa")//根据ID更新 UPDATE `t_user` SET `name`='test',`updated_at`='2022-05-13 10:27:49.548' WHERE `id` = 1var user = model.TUser{ID: 1}db.Model(&user).Update("name", "test")

4、全部代码

package mainimport ("fmt""log""os"model "strom-huang-go/go_mysql/model""time""gorm.io/driver/mysql""gorm.io/gorm""gorm.io/gorm/logger"
)func main() {//启用打印日志newLogger := logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), // io writerlogger.Config{SlowThreshold: time.Second, // 慢 SQL 阈值LogLevel:      logger.Info, // Log level: Silent、Error、Warn、InfoColorful:      false,       // 禁用彩色打印},)dsn := "root:root@tcp(127.0.0.1:3306)/go_admin?charset=utf8mb4&parseTime=True&loc=Local"db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: newLogger,})if err != nil {fmt.Println(err)return}// 条件更新 UPDATE `t_user` SET `name`='aa',`updated_at`='2022-05-13 10:19:57.743' WHERE name = 'a'db.Model(&model.TUser{}).Where("name = ?", "a").Update("name", "aa")//根据ID更新 UPDATE `t_user` SET `name`='test',`updated_at`='2022-05-13 10:27:49.548' WHERE `id` = 1var user = model.TUser{ID: 1}db.Model(&user).Update("name", "test")//--------------------------------------更新多列---------------------------------------------//  根据 `struct` 更新属性,只会更新非零值的字段//  UPDATE `t_user` SET `id`=1,`name`='hello',`password`='1',`phone`='123',`updated_at`='2022-05-13 10:32:17.812'db.Model(&model.TUser{ID: 1}).Updates(model.TUser{Name: "hello", Password: "1", Phone: "123"})// 根据 `map` 更新属性// UPDATE `t_user` SET `password`='111',`phone`='456',`name`='hello',`updated_at`='2022-05-13 10:35:09.953' WHERE `id` = 1db.Model(&model.TUser{ID: 1}).Updates(map[string]interface{}{"name": "hello", "Password": "111", "Phone": "456"})//--------------------------------------更新选定字段--------------------------------------//忽略某些字段:UPDATE `t_user` SET `name`='hello',`updated_at`='2022-05-13 10:38:56.004' WHERE `id` = 1db.Model(&model.TUser{ID: 1}).Select("name").Updates(map[string]interface{}{"name": "hello", "Password": "111", "Phone": "456"})//onmit 不更新这个字段 UPDATE `t_user` SET `password`='111',`phone`='456',`updated_at`='2022-05-13 10:39:57.516' WHERE `id` = 1db.Model(&model.TUser{ID: 1}).Omit("name").Updates(map[string]interface{}{"name": "hello", "Password": "111", "Phone": "456"})//--------------------------------------批量更新--------------------------------------// 根据 struct 更新//UPDATE `t_user` SET `name`='hello',`created_at`='2022-05-13 10:45:11.233',`updated_at`='2022-05-13 10:45:11.255' WHERE phone = '122222'db.Model(&model.TUser{}).Where("phone = ?", "122222").Updates(&model.TUser{Name: "hello", CreatedAt: time.Now()})// 根据 map 更新 UPDATE `t_user` SET `name`='hello',`password`='1213' WHERE id IN (1,2)db.Table("t_user").Where("id IN ?", []int{1, 2}).Updates(map[string]interface{}{"name": "hello", "password": "1213"})//更新的记录数result := db.Model(model.TUser{}).Where("phone = ?", "122222").Updates(model.TUser{Name: "hello", Password: "1213"})fmt.Print(result.RowsAffected)
}

go : 使用gorm修改数据相关推荐

  1. mysql并发更新数据,多用户并发修改数据解决方案。

    mysql并发更新数据,多用户并发修改数据解决方案. 在系统中,有一些如余额.资产.积分的数据,是要保证数据一致性的.如,一个人使用两个设备同时进行消费操作,如何保证数据一致性的问题. 我们一起来思考 ...

  2. 【jdbc】兴唐第三十一节课之修改数据和查询数据(使用自己写的DBUtil)

    一.修改数据 方法一 代码实现: public static void opDBByNormal() {DruidDataSource dds = new DruidDataSource(); dds ...

  3. fiddler使用技巧进阶,如何抓包修改数据?——AutoResponder重定向

    " 介绍Fiddler的AutoResponder重定向功能." Fiddler功能十分强大,既能抓取报文,也能构造报文,本文继续介绍fiddler的功能,这次的功能与构造报文相关 ...

  4. pb 修改数据窗口种指定字段位置_如何在PB数据窗口中修改数据---设置数据窗口的更新属性...

    如何在 PB 数据窗口中修改数据 --- 设置数据窗口的更新属性 数据窗口对象非常强大的原因之一就是能够很容易地修改数据库.当用户修 改了数据窗口中的数据,插入了新的数据行或者删除了数据行以后,只要调 ...

  5. 分享:bbed修改数据文件头推进scn与其他数据文件相同

    2019独角兽企业重金招聘Python工程师标准>>> 场景简介: 物理copy表空间数据文件,数据库发生完全检查点,删除该表空间下的数据文件,使该表空间数据文件头的scn与其他数据 ...

  6. mysql所有的编码_MySQL 批量修改数据表编码及字符集

    当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改.以下备注批量修改方案( 以修改为 utf8mb4_bin 为例,注意将 db_name 换为真实的数据库名 ). 1. ...

  7. php pdo 方法,PHP使用PDO修改数据的方法

    PHP使用PDO修改数据的方法 发布时间:2020-06-09 11:31:36 来源:亿速云 阅读:263 作者:Leah 这篇文章给大家分享的是PHP使用PDO修改数据的方法.小编觉得挺实用的,因 ...

  8. Fast RCNN 训练自己数据集 (2修改数据读取接口)

    Fast RCNN 训练自己数据集 (2修改数据读取接口) Fast RCNN训练自己的数据集 (2修改读写接口) 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.co ...

  9. 【RecyclerView】 十二、RecyclerView 数据更新 ( 修改单条数据 | 批量修改数据 )

    文章目录 一.修改单条数据 二.批量修改数据 三.完整代码示例 四.RecyclerView 相关资料 一.修改单条数据 修改单条数据 : 调用 RecyclerView.Adapter 的 void ...

最新文章

  1. 什么才是真正的程序员?
  2. Linux 常用命令与设置
  3. 用django2.1开发公司官网(上)
  4. vue html5模板,vue-h5-template
  5. python 获取系统相关编码的函数
  6. 数据库设计 Assignment 02
  7. Confluence 6 配置边栏
  8. 闪灵CMS插件自动采集文章主动推送给搜索引擎
  9. 互联网日报 | 微信聊天时可直接“搜一搜”了;蚂蚁集团9月18日科创板首发上会;谷歌正式发布安卓11系统...
  10. 1、vinc = vict 胜、征服
  11. 什么是代理服务器及其作用
  12. Unity 简单TCP通信实现
  13. 华为首部鸿蒙,华为首部鸿蒙手机P50来了!顶级拍照再升级,麒麟芯片或绝唱
  14. 【R语言】【1】初学R语言语法使用Rstudio编辑
  15. (编程题)相邻数字相乘为偶数
  16. 高仿微信上划取消录音
  17. AI 编程助手 亚马逊CodeWhisperer使用简介
  18. 电脑怎么录屏幕视频带声音?电脑录屏教程介绍
  19. 工单状态TECO/DLV
  20. udp丢包 又是udp丢包

热门文章

  1. 第二章 会计循环 详细笔记
  2. 股票基金模拟交易日志9
  3. 平面3连杆机器人正逆解
  4. 傅里叶变换与量子图像加密
  5. 工银e生活开发脱坑日志(6)开户申请API接入申请表
  6. Android 源码梳理
  7. python 三维数据绘制等值高线剖面图_基于MapGIS数字高程模型基岩面高程等值线图的制作...
  8. js判断数组类型的方法总结
  9. 【质疑】谴责一本Asp.net类书籍
  10. linux篇【9】:进程间通信(共享内存)——<后序>