这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
此笔记的主要内容如下
- 课程介绍(包括三件套介绍)
- 三件套使用
- 实例案例介绍
课程介绍
三件套介绍
Gorm,ORM框架
Kitex,Golang微服务RPC框架
Hertz,HTTP框架,结合了其他开源框架的优势
三件套使用
Gorm的基本使用
定义Gorm Model
type Product struct {
Code string
Price uint
}
连接数据库:GORM通过驱动来连接数据库,如果需要连接其他类型的数据库,可以复用/自行开发驱动。
db, err := gorm.Open(mysql.Open(), &gorm.Config{})
if err != nil {
}
创建数据 db.Create(&Prodect{Code: "1", Price: 100})
不处理冲突创建一条数据 db.Clauses(clause.OnConclict{DoNothing: true}).Create(&Product{Code : "1", Price: 100})
查询数据
var product Product
db.First(&product, 1) // 根据整型主键查找
db.First(&product, "code = ?", "1") // 查找 code 字段值为 1 的记录
更新数据 db.Model(&product).Update("Price", 200)
GORM事务
GORM提供了Begin、Commit、Rollback方法用于事务
// 开始事务
tx := db.Begin()
// 在事务中执行一些db操作
if err := tx.Create(&User(Name:"name")).Error; err != nil {
//遇到错误,回滚
tx.Rollback()
return
}
// 提交事务
tx.Commit()
GORM提供了Transaction方法用于自动提交事务,避免用户漏写Commit、Rollback
if err = db.Transaction(func(tx *gorm.DB) error {
if err = tx.Create(&User{Name:"name"}).Error; err != nil{
//遇到错误
return err
}
return nil
}); err != nil {
return
}
Kitex基本使用
Hertz基本使用
使用Hertz实现,服务监听8080端口并注册一个GET方法的路由函数
h := server.Default(server.WithHostPorts("127.0.0.1:8080"))
h.GET("/ping", func(c context.Context, ctx *app.RequestContext) {
ctx.JSON(consts.StatusOK, utiil.H{"ping": "pong"})
})
h.Spin()
Hertz路由
Hertz提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由
Hertz提供了路由组(Group)的能力,用于支持路由分组的功能
Hertz提供了参数路由和通配路由,路由的优先级为:静态路由>命名路由>统配路由
参数路由是 :version 通配路由是 *action 通过Param()去获取
Hertz参数绑定
Hertz提供了Bind、Validate、BindAndValidate函数用于进行参数绑定和校验
Hertz中间件
Hertz的中间件主要分为客户端中间件与服务端中间件
什么场景下需要使用中间件?比如 打日志 计算接口耗时 信息的设置和传递
Hertz Client
Hertz提供了HTTP Client用于帮助用户发送HTTP请求
Hertz代码生成工具
Hertz提供了代码生成工具Hz,通过定义IDL文件即可生成对应的基础服务代码