GORM 知识点

资料 网址
GORM官方文档 http://gorm.io/zh_CN/docs/index.html
  1. 生成的 SQL 语句会排除没有值或值为 零值 的字段。
  2. 注意 所有字段的零值, 比如 0, '', false 或者其它 零值,都不会保存到数据库内,但会使用他们的默认值。 如果你想避免这种情况,可以考虑使用指针或实现 Scanner/Valuer 接口
  3. 当通过结构体进行查询时,GORM将会只通过非零值字段查询,这意味着如果你的字段值为0,'', false 或者其他 零值时,将不会被用于构建查询条件;你可以使用指针或实现 Scanner/Valuer 接口来避免这个问题.
  4. Count 必须是链式查询的最后一个操作 ,因为它会覆盖前面的 SELECT,但如果里面使用了 count 时不会覆盖
  5. Save会更新所有字段,即使你没有赋值;如果你只希望更新指定字段,可以使用Update或者Updates;
  6. 无 Hooks 更新:上面的更新操作会自动运行 model 的 BeforeUpdate, AfterUpdate 方法,更新 UpdatedAt 时间戳, 在更新时保存其 Associations, 如果你不想调用这些方法,你可以使用 UpdateColumn, UpdateColumns
  7. 批量更新时 Hooks 不会运行
  8. 警告:删除记录时,请确保主键字段有值,GORM 会通过主键去删除记录,如果主键为空,GORM 会删除该 model 的所有记录。
  9. 软删除:如果一个 model 有 DeletedAt 字段,他将自动获得软删除的功能! 当调用 Delete 方法时, 记录不会真正的从数据库中被删除, 只会将DeletedAt 字段的值会被设置为当前时间
  10. 想要创建包含多个整型的复合主键,你需要为这些整型字段关闭 auto_increment
原文地址:https://www.cnblogs.com/cag2050/p/13449898.html