Halo

A magic place for coding

0%

gorm零值更新的坑

gorm零值更新的坑

  gorm是Go里面操作数据库比较常用的库,功能非常强大,接口支持也做得挺好,但是最近在使用的过程中碰到了一个坑,没注意的话还是挺难找出来的,特意在这里和大家分享。

  踩坑的地方是在更新数据库的时候,我们先来看看gorm提供的几种更新的方式:

  • 更新所有的字段: Save()
  • 只更新改变的字段: Update()
  • 只更新选中的字段: Updates()

  坑是在使用第三种更新方法的时候,我想更新一个数量为0,赋值后放到Updates()里面,然而gorm并不会更新零值的字段,它会忽略掉所有值为0的字段。所以解决的方法有以下两个:

  1. 可以转为使用Save(),但需要注意这个会更新所有的字段
  2. 使用map类型的结构,定义一个map[string]interface{}key为数据库的列名,value是需要更新的内容,然后把这个map传入到Updates()中。

Welcome to my other publishing channels