Go 框架 | 青训营笔记

88 阅读3分钟

Go 框架 | 青训营笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天,主要记录相关的知识点。

本堂课重点内容

  • GORM
  • Kitex
  • Hertz

GORM

GORMGORMGoGo 专门的 ORMORM 框架之一, 提供了良好的性能。

ORM

ORMORM , 即 ObjectObject RationalRational MappingMapping ,对象关系映射模式,是一种为了解决 面向对象与关系数据库存在的互不匹配问题 的模式。

在实际的开发中,可能需要写不少的代码来实现对数据库的 CRUDCRUD 操作,但是这些代码往往很多都是重复的,而通过 ORMORM ,则可以将这些实体与数据库的表建立映射,避免了专门实现一层数据访问层,同时也不用写大量的 SQLSQL 直接编码, 让程序员像操作一个对象一样获取数据。

GORMGORM 的官方文档: gorm.io/zh_CN/docs/…

GORMGORM 通过驱动连接数据库,因此在连接数据库时,需要给出一个 DSN

细节点

在使用 GORMGORM 时,有些点需要注意:

  • 尽量使用 FindFind 代替 FirstFirst , 因为 FirstFirst 查询不存在的数据的时候会返回 ErrRecordNotFoundErrRecordNotFound , 而 FindFind 不会返回错误
  • 当使用了 CreateCreateUpdateUpdate 等实际动词时,会直接执行
  • 可以使用 ModelModel 方法传递表名
  • 当查询、更新的条件包含零值时 (falsefalse00 等),使用 mapmap 而不是结构体,因为结构体的零值条件不会被用于构建 SQLSQL 语句
  • 可以使用 gorm.DeleteAtgorm.DeleteAt 实现软删除,软删除后数据被从数据库中真正的删除,但是无法被正常访问到(除了使用 UnscopedUnscoped
  • 可以使用 TansactionTansaction 来避免漏写 CommitCommitRollbackRollback 等条件
  • 默认情况下,GORMGORM 使用 IDID 作为主键,使用结构体名的 蛇形复数 作为表名,字段名的 蛇形 作为列名,并使用 CreatedAtCreatedAtUpdatedAtUpdatedAt 字段追踪创建、更新时间

Kitex

KitexKitex 是一个 GoGo 微服务 RPCRPC 框架,具有高性能强可扩展的特点。

RPC

RPCRPC , 全称 RemoteRemote ProcedureProcedure CallCall ProtocolProtocol , 远程过程调用协议, 一个通俗的理解是: RPCRPC 协议使得在 客户端在不清楚调用细节的情况下调用远程计算机上的某个对象,就像在本地调用一个应用程序一样

IDL

IDLIDL 是用来描述软件组件接口的一种计算机语言。IDLIDL 通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流;比如,一个组件用 C++C++ 写成,另一个组件用 JavaJava 写成。

关于 KitexKitex快速开始 | CloudWeGo

Hertz

HertzHertz 是一套 HTTPHTTP 框架,具有高应用性,高性能,高扩展的特点。

HertzHertz 官方文档:快速开始 | CloudWeGo

基本操作

  • 支持路由分组、基本路由 Post/GetPost/Get 等配置
  • 支持参数路由和通配符路由,优先级:静态路由>命名路由>通配路由
  • 提供了 Bind/Validate/BindAndValidateBind/Validate/BindAndValidate 用于参数绑定与校验
  • 提供了客户端和服务端的中间件
  • 可以使用 ClientClient 帮助发送请求
  • 可以通过定义 IDLIDL 来使用代码生成工具自动生成代码

个人总结

本次课程主要学习了:

  • GORM及ORM相关知识
  • Kitex及RPC相关知识
  • Hertz