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

密云区建设委员会官方网站/百度网址大全电脑版旧版本

密云区建设委员会官方网站,百度网址大全电脑版旧版本,wordpress 破解商场主题,wordpress微信机器人快速指南: 通过结构体变量更新字段值, gorm 库会忽略零值字段。就是字段值等于 0, nil, “”, false 这些值会被忽略掉,不会更新。如果想更新零值,可以使用 map 类型替代结构体。 一、问题 我们都知道,使用 golang 定义一个变量并…

快速指南: 通过结构体变量更新字段值, gorm 库会忽略零值字段。就是字段值等于 0, nil, “”, false 这些值会被忽略掉,不会更新。如果想更新零值,可以使用 map 类型替代结构体。

一、问题

我们都知道,使用 golang 定义一个变量并且不赋初始值时,初始值就默认为 0 值,比如 0, nil, “”, false 等。

在使用 gorm 包进行数据库操作时,如果想要进行字段的更新,只需要将要变动的字段进行修改,然后执行 db.Updates() 操作即可。

假定有如下结构体定义:

type User struct {ID    int         `gorm:"primary_key;column:id"`Name  string `gorm:"column:name"`Score int `gorm:"column:score"`
}

现需要将 score 字段由 100 改为 0 时,我们正常的想法是把对应的字段改为 0 值,然后执行 db.Updates() 就好。例如:

func SetUserScoreZero(user *User,id int) error {...user.Score = 0if err := db.Table("xxx").Where("id = ?", id).Updates(user).Error; err != nil {return err}return nil
}

但是会发现更新不生效,因为将 user.Score 设置为 0 值后;就像不重新赋值 Name ,Name 为 “” 一样,gorm 就不会对其进行修改。

二、解决

如果想更新零值,可以使用 map 类型替代结构体。

代码实现如下:

import (..."github.com/fatih/structs"...
)...type User struct {// 注意,需要添加 structs 的标签,不然 SQL 语句有问题ID    int `gorm:"primary_key;column:id" structs:"id"`Name  string `gorm:"column:name" structs:"name"`Score int `gorm:"column:score" structs:"score"`
}...func SetUserScoreZero(user *User,id int) error {...user.Score = 0// 使用 structs 库将 struct 转换为 MapuserMap := structs.Map(user)if err := db.Table("xxx").Where("id = ?", id).Updates(userMap).Error; err != nil {return err}return nil
}
...

参考:
gorm update 使用: https://blog.51cto.com/u_15061931/4595514

结构体转map[string]interface{}的若干方法
https://www.liwenzhou.com/posts/Go/struct2map/

http://www.lbrq.cn/news/1111123.html

相关文章:

  • 女人网上量体做衣网站/建立网站的步骤
  • 什么是静态网页和动态网页/手机优化是什么意思
  • 网站建设后台有哪些东西/百度推广代理商加盟
  • 网站做app的软件叫什么/要怎么网络做推广
  • 网站锚文本怎么做/系统优化的方法
  • 学校网站手机站的建设方案/苏州seo关键词优化排名
  • 杭州网站做的好公司名称/seo技术软件
  • 绍兴网站快速排名优化/免费制作网页的网站
  • 南京怎样做网站/湖南发展最新消息公告
  • 做花馍网站/高级seo课程
  • 郑州住房和城乡建设厅网站/百度网址收录入口
  • 做企业规划的网站/百度推广怎么优化
  • 做网站涉及到哪些/seo关键词推广案例
  • 免费网站网络推广/深圳谷歌优化seo
  • 中国建设银行网站用户/查询关键词排名工具
  • 跨境电商工具类产品的网站/江苏企业网站建设
  • 阿里云云服务器ecs做网站访问慢/网络营销策略案例
  • 网站基本建设是什么/怎么创建一个自己的网站
  • 龙岗做商城网站建设/网站优化助手
  • 先进的网站建设/最近最新新闻
  • 韩国在中国做美食的视频网站/河北seo关键词排名优化
  • 品牌网站建设优化公司哪家好/网络营销管理
  • 网站备案多久做一次/北京seo外包 靠谱
  • 企业建设网站公司/seo一键优化
  • wordpress建手机站教程/阿里巴巴seo排名优化
  • 做网站要注意什么/成都谷歌seo
  • 装饰工程/厦门谷歌seo公司有哪些
  • 漳州最具口碑的网站建设/怎么提高百度搜索排名
  • 牛仔裤网站设计/百度开户流程
  • 优秀网站管理员/国家卫健委:不再发布每日疫情信息
  • 二刷 黑马点评 附近商户
  • Redisson 分布式锁
  • 基于MATLAB的极限学习机ELM的数据回归预测方法应用
  • Qt初阶开发:QMediaPlayer的介绍和使用
  • 闲庭信步使用图像验证平台加速FPGA的开发:第二十一课——高斯下采样后图像还原的FPGA实现
  • 基于MATLAB和ZEMAX的光学传递函数与调制传递函数联合仿真