Go框架三件套|青训营笔记

100 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第4天。

本节课程介绍了Go框架三件套:Gorm,Kitex,Hertz。 Gorm是一个Go语言写的ORM框架,Kitex是字节内部的RPC框架,Hertz也是字节内部的HTTP框架,三者都在字节内部有广泛的应用。

Gorm

ORM (Object-Relationl Mapping) 即对象关系映射,一般指将关系型数据库和代码中的对象做映射,把数据操作和业务操作分离开来,业务查询数据时调ORM提供的接口就可以得到数据,不用重复写SQL、事务等数据库操作,专注于业务和代码逻辑。

Gorm定义gorm model时,默认取类名的蛇形复数作为表名,字段名的蛇形作为列名,但是可通过实现TableName ( ) 接口来自定义表名。

测试样例:

type TestuserUser struct {
   Id   int
   Name string
}

默认取类名的蛇形复数

image.png

func (TestuserUser) TableName() string {
   return "TestUser"
}

实现TableName接口后,SQL执行时变成了自定义的表名

image.png

Gorm目前支持MySQL、SQLServer、PostgerSQL、SQLite,其他类型数据库可以复用或自行开发驱动。Gorm支持软删除,可以通过Unscoped查到被软删的数据。另外注意查询条件要加在执行之前。

Gorm事务:Gorm提供了start,commit,rollback等方法,使用时按规范应该用tx代替db来命名。还可以写Transaction 方法来自动提交事务,避免漏写。

Gorm Hook:可以写Hook函数,在CURD前或后自动调用,若错误则会自动回滚事务。

Gorm 官方文档 gorm.cn

Kitex基本使用

kitex可以自动生成基本代码,先定义IDL,再使用kitex生成代码。

之后在 handler.go 文件里实现 IDL 里定义的接口即可。

Hertz基本使用

Hertz通过Get、Post、Put等方法注册路由,对应到对应的函数,之后执行对应的操作和逻辑,路由时可以通过Group方法来路由分组。

小结

本节课学习到了Hertz、Kitex这些功能强大,使用方便的框架的基本使用。但课程时间有限,还有许多知识来不及详细讲述,但是课程中详尽地贴出了许多文档链接,课下可以抽时间研究。