go : 使用gorm修改数据
能够让你后悔的,从来不是你做过的事,而是你想做却没有去做的事!!!
代码已放在: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修改数据相关推荐
- mysql并发更新数据,多用户并发修改数据解决方案。
mysql并发更新数据,多用户并发修改数据解决方案. 在系统中,有一些如余额.资产.积分的数据,是要保证数据一致性的.如,一个人使用两个设备同时进行消费操作,如何保证数据一致性的问题. 我们一起来思考 ...
- 【jdbc】兴唐第三十一节课之修改数据和查询数据(使用自己写的DBUtil)
一.修改数据 方法一 代码实现: public static void opDBByNormal() {DruidDataSource dds = new DruidDataSource(); dds ...
- fiddler使用技巧进阶,如何抓包修改数据?——AutoResponder重定向
" 介绍Fiddler的AutoResponder重定向功能." Fiddler功能十分强大,既能抓取报文,也能构造报文,本文继续介绍fiddler的功能,这次的功能与构造报文相关 ...
- pb 修改数据窗口种指定字段位置_如何在PB数据窗口中修改数据---设置数据窗口的更新属性...
如何在 PB 数据窗口中修改数据 --- 设置数据窗口的更新属性 数据窗口对象非常强大的原因之一就是能够很容易地修改数据库.当用户修 改了数据窗口中的数据,插入了新的数据行或者删除了数据行以后,只要调 ...
- 分享:bbed修改数据文件头推进scn与其他数据文件相同
2019独角兽企业重金招聘Python工程师标准>>> 场景简介: 物理copy表空间数据文件,数据库发生完全检查点,删除该表空间下的数据文件,使该表空间数据文件头的scn与其他数据 ...
- mysql所有的编码_MySQL 批量修改数据表编码及字符集
当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改.以下备注批量修改方案( 以修改为 utf8mb4_bin 为例,注意将 db_name 换为真实的数据库名 ). 1. ...
- php pdo 方法,PHP使用PDO修改数据的方法
PHP使用PDO修改数据的方法 发布时间:2020-06-09 11:31:36 来源:亿速云 阅读:263 作者:Leah 这篇文章给大家分享的是PHP使用PDO修改数据的方法.小编觉得挺实用的,因 ...
- Fast RCNN 训练自己数据集 (2修改数据读取接口)
Fast RCNN 训练自己数据集 (2修改数据读取接口) Fast RCNN训练自己的数据集 (2修改读写接口) 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.co ...
- 【RecyclerView】 十二、RecyclerView 数据更新 ( 修改单条数据 | 批量修改数据 )
文章目录 一.修改单条数据 二.批量修改数据 三.完整代码示例 四.RecyclerView 相关资料 一.修改单条数据 修改单条数据 : 调用 RecyclerView.Adapter 的 void ...
最新文章
- 什么才是真正的程序员?
- Linux 常用命令与设置
- 用django2.1开发公司官网(上)
- vue html5模板,vue-h5-template
- python 获取系统相关编码的函数
- 数据库设计 Assignment 02
- Confluence 6 配置边栏
- 闪灵CMS插件自动采集文章主动推送给搜索引擎
- 互联网日报 | 微信聊天时可直接“搜一搜”了;蚂蚁集团9月18日科创板首发上会;谷歌正式发布安卓11系统...
- 1、vinc = vict 胜、征服
- 什么是代理服务器及其作用
- Unity 简单TCP通信实现
- 华为首部鸿蒙,华为首部鸿蒙手机P50来了!顶级拍照再升级,麒麟芯片或绝唱
- 【R语言】【1】初学R语言语法使用Rstudio编辑
- (编程题)相邻数字相乘为偶数
- 高仿微信上划取消录音
- AI 编程助手 亚马逊CodeWhisperer使用简介
- 电脑怎么录屏幕视频带声音?电脑录屏教程介绍
- 工单状态TECO/DLV
- udp丢包 又是udp丢包