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

52 阅读2分钟

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

GORM

Gorm是字节内部广泛使用并且拥有非常丰富开源扩展的ORM框架。

  • Gorm目前支持MySQL、SQLServer、PostgreSQL、SQLite,GORM通过驱动连接数据库。
  • 创建数据时,使用clause.OnConflict处理数据冲突。
  • 通过使用default标签为字段设置默认值。
  • 使用使用First 时,需要注意查询不到数据,会返回ErrRecordNotFound。使用Find查询多条数据,查询不到数据不会返回错误。
  • 当使用结构作为条件查询时,GORM只会查询非零值字段。这意味着如果字段值为0、"、false或其他零值,该字段不会被用于构建查询条件,使用Map来构建查询条件。
  • 使用Struct更新时,只会更新非零值,如果需要更新零值可以使用Map更新或使用Select选择字段。
  • GORM提供了gorm.DeletedAt用于帮助用户实现软删。拥有软删除能力的Model调用Delete时,记录不会被从数据库中真正删除。但GORM会将DeletedAt置为当前时间,并且你不能再通过正常的查询方法找到该记录。使用Unscoped可以查询到被软删的数据。
  • Gorm提供了Begin、 Commit、Rollback方法用于使用事务。
  • Gorm提供了Tansaction方法用于自动提交事务,避免用户漏写Commit、Rollbcak。
  • GORM在提供了CURD的Hook能力。Hook是在创建、查询、更新、删除等操作之前、之后自动调用的函数。如果任何Hook返回错误,GORM将停止后续的操作并回滚事务。

Kitex

kitex是字节内部的Golang微服务RPC框架,具有高性能、强可拓展的主要特点,支持多协议并且拥有丰富的开源扩展。

使用kitex -module example -service example echo.thrift命令生成代码。

build.sh:构建脚本

kitex gen:IDL内容相关的生成代码,主要是基础的Server/Client代码。

main.go程序入口

handler.go用户在该文件里实现IDL service定义的方法

Hertz

Hertz是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节内部的需求,具有高易用性、高性能、高扩展性的特点。 HertZ

实战案例

[笔记项目](https:/lithubkcom/cloudwego/kitex- examples/ree/mainbizdemo/easy note)

小结

关于三件套的讲解较浅,需要自己深入文档,结合实战案例进一步了解学习。