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

148 阅读3分钟

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

1.主要内容

  1. Gorm、Kitex、Hertz三件套的介绍
  2. Gorm、Kitex、Hertz三件套的基本用法和常见API的讲解
  3. 项目的介绍和讲解

2.本节详细内容

Gorm

迭代10年以上的强大功能的ORM框架,目前支持MySQL等主流数据库,通过驱动进行连接。

Gorm的增删改查

增:创建 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
删:删除 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
改:更新 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
查:查询 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
高级查:高级查询 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.

Gorm的事务

Begin、Commit、Rollback方法
事务的官方文档:事务 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.

Hook

Hook 是在创建、查询、更新、删除等操作之前、之后调用的函数。 它会在创建、更新、查询、删除时自动被调用。
如果任何回调返回错误,GORM 将停止后续的操作并回滚事务。
Hook:Hook | GORM - The fantastic ORM library for Golang, aims to be developer friendly.

性能提升

默认性能就很好,可以通过禁用默认事务、缓存预编译语句来进一步的提升其性能。

Tips

  • Gorm的约定
  1. Gorm使用名为ID的字段作为主键
  2. 使用结构体的蛇形复数作为表名
  3. 字段名的蛇形作为列明
  4. 使用CreatedAt、UodatedAt字段作为创建、更新时间
  • Gorm有着丰富的生态和扩展,更多用法看官方文档

Kitex

字节内部Go语言微服务RPC框架,高性能高可用强拓展,支持多种协议。
Kitex的安装、定义IDL、生成代码、基本使用详见:快速开始 | CloudWeGo

Tips

  • 目前对Win系统支持差,需要使用虚拟机
  • 生成代码部分
  1. build.sh 构建脚本
  2. kitex_gen IDL内容相关代码。为基础的Server/Client代码
  3. handler.go 用户在这里实现IDL service定义的方法

Hertz

3.实践案例

具体项目实例:kitex-examples/bizdemo/easy_note at main · cloudwego/kitex-examples (github.com)

image.png

  • demoapi:用户的登录、注册、增删改查笔记行为
  • demouser:创建、查询、校验用户
  • demonote:笔记增删改查

通过调用demoapi操作demouser和demonote,etcd完成服务注册与发现

4.课后总结

  • 通过课程对Gorm、Kitex、Hertz三个框架有了初步的认识和了解
  • 基础用法详细需要去看官方的文档,看文档也可以了解更多的用法
  • 实战案例去详细看整个的代码
  • 后续大作业会用到

5.引用

字节直播课:Go 框架三件套详解
Kitex | CloudWeGo
Hertz | CloudWeGo
GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.