这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
目标
- 将学到的知识应用到项目中
- 掌握 Hertz/Kitex/Gorm 的基本用法
- 通过学习实战案例,可以使用 Hertz/Kitex/Gorm 完成日常后端开发任务
1. 介绍
三件套介绍
Gorm
- Gorm 是一个已经迭代了10年+的功能强大的 ORM 框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展 Kitex
- Kitex 是字节内部的 Golang 微服务 RPC 框架,具有高性能,强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展。 Hertz
- Tertz 是字节内部的 HTTP 框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性的特点
2. 三件套的使用
2.1 Gorm 的基本使用
Gorm 的约定(默认)
- Gorm 使用名为 ID 的字段 作为主键
- 使用结构体的 蛇形负数作为表名
- 字段名的蛇形作为列名
- 使用 CreateAt、UpdatedAt段作为创建、更新时间
2.2 Gorm 支持的数据库
Gorm 目前支持 MySQL、SQLServer、PostgreSQL、SQLLite。
Gorm 通过驱动来连接数据库,如果需要连接其他类型的数据库,可以复用/自行开发驱动。
2.3 Gorm 创建数据
如何使用 Upsert? 使用 clause.OnConflict 处理数据冲突
如何使用默认值? 通过使用 default 标签为字段定义默认值
2.4 Gorm 查询数据
First 的使用踩坑
- 使用First时,需要注意查询不到数据会返回 ErrRecordNotFound。
- 使用Find查询多条数据,查询不到数据不会返回错误 使用结构体作为查询条件
- 当使用结构体作为条件查询时,Gorm 只会查询非零值字段。这意味着如果您的字段值为 0、"、false 或其他
零值,该字段不会被用于构建查询条件,使用 Map 来构建查询条件。