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

98 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第6天,今天我重温了Go语言框架三件套的相关知识。首先是三件套的相关介绍,三件套分别是Gorm,Kitex和Hertz。Gorm是一个已经迭代了10多年的功能强大的ORM框架;Kitex是字节内部的Golang微服务RPC框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展;Hertz是字节内部的HTTP框架,它是参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能和高扩展性特点。 Gorm使用名为ID的字段作为主键,使用结构体的蛇形负数作为表名,字段名的蛇形作为列名,使用CreatedAt、UpdatedAt字段作为创建、更新时间。GORM目前支持MySQL、SQLServer、PostgreSQL和SQLite等数据库。GORM通过驱动来连接数据库,如果需要连接其它类型的数据库,可以复用/自行开发驱动。 通过使用clause.OnConflict来处理数据冲突,通过使用default标签为字段定义默认值。当使用结构作为条件查询时,GORM只会查询非零值字段,使用Struct更新时,只会更新非0值,如果需要更新零值,可以使用Map更新或使用Select选择字段。Gorm提供了gorm.DeletedAt用于帮助用户实现软删。使用Unscoped可以查询到被软删的数据。GORM提供了Begin、Commit、Rollback等方法用于使用事物。对于写操作(创建、更新、删除),为了确保数据的完整性,GORM会将它们封装在事务内运行。但是这会降低性能,可以使用SkipDefaultTransaction关闭默认事物。使用IDL定义服务与接口。在Kitex生成代码中,build.sh是构建脚本的功能。今天通过学习Go语言三件套的知识,学到了很多,懂得了Go语言的基本框架,受益匪浅。