《Go 框架三件套详解(Web/RPC/ORM)》课程笔记 | 青训营

80 阅读2分钟

一、课程介绍

1.1 Gorm

一个功能强大的ORM框架,拥有丰富的开源扩展

1.2 Kitex

一个Golang微服务RPC框架,具有高性能、强可扩展性的主要特点,支持多协议并且有丰富的开源扩展

1.3 Hertz

一个字节内部的HTTP框架,具有高易用性、高性能、高扩展性特点

二、三件套的使用

2.1 Gorm的基础使用

  • Gorm默认使用名为ID 的字段作为主键
  • 默认使用结构体的蛇形负数作为表名
  • 默认使用字段名的蛇形作为列名
  • 使用CreateAtUpdatedAt字段作为创建、更新时间

Gorm支持的数据库:

  • MySql
  • SQLServer
  • PostgreSQL
  • SQLite

Gorm创建数据

  • 使用Upsert:clause.OnConflict
  • 使用默认值:default标签

Gorm查询数据

  • 使用First时查询不大到数据会返回ErrRecordNotFound
  • 使用Find查询多条数据则不会返回错误
  • 使用结构体作为查询条件时,GORM只会查询非零值字段

Gorm更新数据

  • 使用Struct更新时,只会更新非零值,如果更新零值可使用Map更新或Select选择字段

Gorm删除数据

  • GORM提供了gorm.DeleteAt用于帮助用户实现软删,软删后的记录不能通过正常的查询方法找到
  • 使用Unscoped可以查询到被软删的数据

Gorm事务

  • Gorm提供了BeginCommitRollback方法用于使用事务
  • Gorm提供了Transaction方法用于自动提交事务,避免用户漏写CommitRollback

2.2 Kitex的基础使用

  • 定义IDL:使用IDL定义服务与接口
  • Kitex生成代码:使用kitex-module example -service example echo.thritf命令
  • Kite服务注册与发现:Kitex的服务注册与发现已经对接了主流的服务注册与发现中心,如ETCDNacos

2.3 Hertz的基础使用

  • Hertz提供了GETPOSTPUTDELETEANY等方法用于注册路由
  • Hertz提供了路由组的能力,用于支持路由分组的功能
  • Hertz提供了参数路由通配路由,路由的优先级为:静态路由 > 命名路由 > 通配路由
  • Hertz提供了BindBindAndValidate函数用于参数绑定和校验
  • Hertz提供了代码生成工具Hz,通过定义IDL文件即可生成对应基础服务代码
  • Hertz性能:网络库Netpoll、Json编解码Sonic、使用sync.Pool复用对象协议层数据解析优化