第五届青训营 」伴学笔记创作活动的第 6 天
这节课主要介绍了 Hertz/ Kitex / Gorm 三个框架的使用。
Gorm
Gorm 是一个已经迭代了10年+的功能强大的 ORM 框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。
Gorm 的约定(默认)
- Gorm 使用名为 ID 的字段 作为主键
- 使用结构体的 蛇形负数作为表名
- 字段名的蛇形作为列名
- 使用 CreatedAt、UpdatedAt 字段作为创建、更新时间
Gorm 支持的数据库如下,也可以自行开发驱动来支持其他类型的数据库
- MySQL
- SQLServer
- PostgreSQL
- SQLite
First 的使用踩坑
- 使用 First 时,需要注意查询不到数据会返回 ErrRecordNotFound。
- 使用 Find 查询多条数据,查询不到数据不会返回错误
使用结构体作为查询条件:当使用结构作为条件查询时,GORM只会查询非零值字段。这意味着如果您的字段值为 0、"false 或其他 零值该字段不会被用于构建查询条件,使用 Map 来构建查询条件。
使用 Struct 更新时,只会更新非零值,如果需要更新零值可以使用 Map 更新或使用 Select 选择字段。
Gorm 事务:提供了 Begin、Commit、Rollback 方法用于事务。
Gorm 提供了 Tansaction 方法用于自动提交事务,避免用户漏写 Commit、 Rollbcak。
GORM 在 提供了 CURD 的 Hook 能力
- Hook 是在创建、查询、更新、删除等操作之前、之后自动调用的函数
- 如果任何 Hook 返回错误,GORM 将停止后续的操作并回滚事务
Kitex
Kitex 是字节内部的 Golang 微服Kitex务 RPC 框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展。
注:Kitex 目前对 Windows 的支持不完善,如果本地开发环境是 Windows 的同学建议使用虚拟机或 WSL2.
Hertx
Hertz 是字节内部的 HTTP 框架参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性特点。