一、课程介绍
1.1 Gorm
一个功能强大的ORM框架,拥有丰富的开源扩展
1.2 Kitex
一个Golang微服务RPC框架,具有高性能、强可扩展性的主要特点,支持多协议并且有丰富的开源扩展
1.3 Hertz
一个字节内部的HTTP框架,具有高易用性、高性能、高扩展性特点
二、三件套的使用
2.1 Gorm的基础使用
- Gorm默认使用名为ID 的字段作为主键
- 默认使用结构体的蛇形负数作为表名
- 默认使用字段名的蛇形作为列名
- 使用
CreateAt、UpdatedAt字段作为创建、更新时间
Gorm支持的数据库:
MySqlSQLServerPostgreSQLSQLite
Gorm创建数据
- 使用Upsert:
clause.OnConflict- 使用默认值:default标签
Gorm查询数据
- 使用
First时查询不大到数据会返回ErrRecordNotFound- 使用
Find查询多条数据则不会返回错误- 使用结构体作为查询条件时,GORM只会查询非零值字段
Gorm更新数据
- 使用
Struct更新时,只会更新非零值,如果更新零值可使用Map更新或Select选择字段
Gorm删除数据
- GORM提供了
gorm.DeleteAt用于帮助用户实现软删,软删后的记录不能通过正常的查询方法找到- 使用
Unscoped可以查询到被软删的数据
Gorm事务
- Gorm提供了
Begin、Commit、Rollback方法用于使用事务- Gorm提供了
Transaction方法用于自动提交事务,避免用户漏写Commit、Rollback
2.2 Kitex的基础使用
- 定义IDL:使用IDL定义服务与接口
- Kitex生成代码:使用
kitex-module example -service example echo.thritf命令- Kite服务注册与发现:Kitex的服务注册与发现已经对接了主流的服务注册与发现中心,如
ETCD,Nacos等
2.3 Hertz的基础使用
- Hertz提供了
GET、POST、PUT、DELETE、ANY等方法用于注册路由- Hertz提供了路由组的能力,用于支持路由分组的功能
- Hertz提供了参数路由和通配路由,路由的优先级为:静态路由 > 命名路由 > 通配路由
- Hertz提供了
Bind、BindAndValidate函数用于参数绑定和校验- Hertz提供了代码生成工具
Hz,通过定义IDL文件即可生成对应基础服务代码- Hertz性能:网络库Netpoll、Json编解码Sonic、使用sync.Pool复用对象协议层数据解析优化