gorm更新查询疑惑?

gorm文档有个更新示例:http://gorm.io/zh_CN/docs/upd...

db.First(&user)

user.Name = "jinzhu 2"
user.Age = 100
db.Save(&user)

//// UPDATE users SET name='jinzhu 2', age=100, birthday='2016-01-01', updated_at = '2013-11-17 21:34:10' WHERE id=111;

问题:
最后一行注释,id=111是怎么来的?是上面的user默认有个id字段,gorm框架会自动把这个id字段放到sql查询语句的id那里去吗?那如果它不是id,是uuid呢,只能用where手动查询吗?

阅读 4.3k
3 个回答

db.First是获取到第一条记录,相当于sql语句 limit 1
这个时候绑定了user变量,user对象里其实已经有了user.id的值,并且值是111
所以这个时候user对象直接save的话,就相当于update了id=111这一条记录

是的,一般ORM的model都会自动生成id,如果是uuid需要手动处理

如果你用的gorm.Model是会自动填充,如果是uuid

type User    struct {

    UUID string `gorm:"primary_key"`

}

也会帮你自动指定为uuid的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题