这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
01.三件套介绍
Gorm Kitex Hertz
02 三件套的基础使用
2.1 Gorm的基础使用
GORM 通过驱动来连接数据库,如果需要连接其它类型的数据库,可以复用/自行开发驱动。
什么是DSN? github.com/go-sal-driv…
查询:First 的使用踩坑
使用 First 时,需要注意查询不到数据会返回 ErrRecordNotFound; 使用 Find 查询多条数据,查询不到数据不会返回错误。
查询: 使用结构体作为查询条件
当使用结构作为条件查询时,GORM 只会查询(更新)非零值字段。这意味着如果您的字段值为 0、"、false 或其他零值,该字段不会被用于构建查询条件,使用Map来构建查询条件可以规避零值问题。
删除: GORM 提供了 gorm.DeletedAt 用于帮助用户实现软删
拥有软删除能力的 Model 调用 Delete 时,记录不会被从数据库中真正删除。但 GORM 会将 DeletedAt 置为当前时间,并且你不能再通过正常的查询方法找到该记录。 使用 Unscoped 可以查询到被软删的数据。
Gorm 提供了 Begin、Commit、Rollback 方法用于使用事务。 Gorm 提供了 Tansaction 方法用于自动提交事务,避免用户漏写 Commit、Rollbcak。
GORM 在 提供了 CURD 的 Hook 能力。 Hook 是在创建、查询、更新、删除等操作之前、之后自动调用的函数。 如果任何 Hook 返回错误,GORM 将停止后续的操作并回滚事务。
更多的 GORM 用法查看 Gorm 的文档(gorm.cn)
2.2 Kitex的基础使用
Kitex 目前对 Windows 的支持不完善,如果本地开发环境是 Windows 建议使用虚拟机或 WSL2。
IDL是定义服务和接口的工具
更多的 GORM 用法查看 Kitex 的文档 www.cloudwego.io/zh/docs/kit…
2.3 Hertz基本使用
Hertz 提供了代码生成工具 Hz,通过定义 IDL(inteface description language) 文件即可生成对应的基础服务代码。
03.实战案例介绍
项目调用关系图
(引用自课程图片)
总结
本次课程,了解了Gorm、Kitex、Hertz这些框架。Gorm是用来操作数据库的工具,Kitex是一个RPC框架,Hertz对外提供API服务。由于微服务的兴起,我们可以将项目中的一些基础服务抽象出来,并且服务之间互相协调、互相配合,为用户提供最终价值。
该文章部分内容来自于以下课程:
字节内部课:Go 框架三件套详解(Web/RPC/ORM)