这是我参与「第五届青训营」笔记创作活动的第6天。
本文重点内容
- Gorm CRUD
- Gorm事务
- Gorm Hook
- Gorm 性能
- Gorm 插件
创建
- 注意链式调用
- 回填
ID - 处理冲突的方法:
CLAUSE.OnConflict - 动词(Find)后不能再加修饰语句(Where)的方法
- default
- 创建 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
查询
First查一条数据,传递指针,可以查询主键或者条件,有Error- 建议用
db.Where().Find() - 注意结构体0值问题,要用map
- 查询 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
更新
.Model().Update()更新,注意需要指出表名.Model().Updates()更新,结构体不能更新0值,要用map- 用
Select选定更新的字段 - 表达式更新
gorm.Expr() - 更新 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
删除
.Delete()gorm.DeletedAt软删除字段,Unscoped可查- 删除 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
事务
- tx=db.Begin(),使用此tx继续操作
- tx.Rollback()
- tx.Commit()
- 可以使用 db.Transaction()
- 事务 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
Hook(前后处理)
性能提高
- 关闭默认事务
- 缓存后续与便于语句
- 索引
- 读写分离扩展
- 性能 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
插件
本文小结
- Gorm CRUD
- Gorm事务
- Gorm Hook
- Gorm 性能
- Gorm 插件