Go 框架三件套详解¶
1. 三件套的使用¶
1.1 GORM¶
注意事项
First使用踩坑:- 使用
First时,需要注意查询不到数据会返回ErrRecordNotFound - 使用
Find查询多条数据时,查询不到数据不会返回错误
- 使用
- 使用结构体作为查询条件:
- 使用结构体作为条件查询时,GORM 只会查询非零值字段,即当字段值为 0、""、false 或其他零值时,该字段不会被用来构建查询条件
- 需要使用
Map来构建查询条件
- 使用结构体更新时,只会更新非零值,如果需要更新零值,可以使用
Map更新或使用Select选择字段
GORM 事务
- GORM 提供了
Begin、Commit、Rollback方法用于使用事务。 - GORM 提供了
Transaction方法用于自动提交事务,避免用户漏写Commit、Rollback。
GORM Hook
- Hook 是在创建、查询、更新、删除等操作之前、之后自动调用的函数;
- 如果任何 Hook 返回错误,GORM 将停止后续的操作并回滚事务。
性能提高
- 对于写操作,为了保证数据的完整性,GORM 会将它们封装在事务内运行,但这会降低性能,可以使用
SkipDefaultTransaction关闭事务; - 使用
PrepareStmt缓存预编译语句可以提高后续调用的速度。
GORM 生态:
1.2 Kitex¶
使用 IDL 定义服务与接口:
- Thrift
- Proto3
Kitex 生态:
1.3 Hertz¶
Hertz 生态:


