[ 后端与 Go | 青训营笔记 ]
这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
课内:Go 框架三件套
三件套 Gorm、Kitex、Hertz介绍与实际应用。
重点
- 课程介绍;
- 三件套的使用;
- 实战案例介绍;
- 课程总结;
细节
课程介绍
目标
- 知识的实践;
- 掌握三件套基本用法;
- 使用三件套完成日常后端开发任务;
三件套介绍
三件套的使用
基本用法
Gorm 的约定
- Gorm 使用名为 ID 的字段作为主键;
- 使用结构体的蛇形负数为表名;
- 字段名的蛇形作为列名;
- 使用 Created At、UpdatedAt 字段作为创建、更新时间。
Gorm 支持的数据库
- 目前支持 MtSQL、SQLServer、RostgreSQL、SQLite;
- Gorm 通过驱动来连接数据库;
Gorm 创建数据
- 使用 Upset:使用 clause.OnConflict 处理数据冲突;
- 使用默认值:使用 default 标签为字段定义默认值;
Gorm 查询数据
- First 使用:需要注意查询不到数据会返回 ErrRecordNotFound。使用 Find 查询多条数据,查询不到数据不会返回错误;
- 使用结构体作为查询条件:Gorm 只会查询非零值字段。这意味着如果字段值为 0、”、false 或其他零值,该字段不会被用于构建查询条件,使用 Map 来构建查询条件;
Gorm 更新数据
- 使用Struct 更新时,只会更新非零值,如果需要更新零值可以使用 Map 更新或使用 Select 选择字段;
Gorm 删除数据
- Gorm 提供了 gorm.DeletedAt 用于帮助用户实现软删除;
- 已有软删除能力的 Model 调用 Delete 时,记录不会被从数据库中真正删除,但 Gorm 会将 DeletedAt 置为当前时间,并且不能再通过正常的查询方法查找到该记录;
- 使用 Unscoped 可以查询到被软删除的时间;
Gorm 事物
- Gorm 提供了 Begin、Commit、Rollback 方法用于使用事务。
- Gorm 提供了 Tansaction 方法用于自动提交事物,避免用户漏写 Commit、Rollbcak;
Gorm Hook
- Gorm 提供了 CURD 的 Hook 能力;
- Hook 是在创建、查询、更新、删除等操作之前、之后自动调用的函数;
- 如果任何 Hook 返回错误,Gorm 将停止后续的操作并回滚事务;
Gorm 性能提高
- 对于写操作(创建、更新、删除),为了保证数据的完整性,Gorm会将它们封装在事物内运行。但这会降低性能,可以使用 SkipDafaultTransaction 关闭默认事物;
- 使用 PrepareStmt 缓存编译语句可以提高后续调用的速度;
Gorm 生态
安装 Kitex 代码生成工具
定义 IDL
Kitex 生成代码
Kitex 基本使用
Kitex Client 发起请求
Kitex 服务注册与发现
Kitex 生态
Hertz 基本使用
Hertz 路由
Hertz 参数绑定
Hertz 中间件
Hertz Client
Hertz 代码生成工具
Hertz 性能
Hertz 生态
实战案例介绍
项目介绍
- 笔记项目是一个使用 Hertz、Kitex、Gorm 搭建出来的具有一定业务逻辑的后端 API 项目;
功能介绍
项目调用关系
IDL 介绍
项目技术栈介绍