Go三件套 | 青训营笔记

49 阅读2分钟

三件套基础使用

Gorm

参考链接

默认约定

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

创建数据

官方文档提供了详细信息

查询数据

官方文档

查询方法

  • First返回一条数据,如果查询不到数据会返回ErrRecordNotFound
  • 使用Find查询多条数据,查询不到数据不会返回错误
  • 通过db.Where来限定查询条件
  • db.Where支持使用结构体作为查询条件。当使用结构体作为条件查询时,GORM只会查询非零值字段,意味着如果字段值为0False或者其他零值,该字段不会被用于构建查询条件,使用Map来构建查询条件。

更新数据

官方文档

删除数据

官方文档

物理删除

直接使用db.Delete

软删除

GORM提供了gorm.DeletedAt实现软删除。在结构体中定义出。

使用Unscoped可以查询到被软删的数据

Gorm事务

Gorm提供了BeginCommitRollback方法使用事务

官方文档

提供了Tansaction方法用于自动提交事务

HOOK

Hook是在创建,查询,更新,删除等操作之前,之后自动调用的函数

Kitex

官方文档

使用IDL定义服务与接口

如果要进行RPC,就需要知道对方的接口是什么,需要传什么参数,同时也需要知道返回值是什么样的。这时候就需要通过IDL来约定双方协议。就像在写代码的时候调用某一个函数时候需要知道函数签名。

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

image-20230121045833965

Kitex基本使用

服务默认监听8888端口

Kitex 服务注册与发现

image-20230121050501859

Hertz

Go语言的HTTP框架

image-20230121051127227

使用Hertz实现,服务监听8080端口并注册了一个GET方法的路由函数。

image-20230121051410239

Hertz提供了GETPOSTDELETEANY等方法注册路由

笔记项目

笔记项目是一个使用Hertz,Kitex,Gorm搭建的具有一定业务逻辑的后端API项目。

项目功能介绍

image-20230121052226401

项目调用关系

image-20230121052312538

技术框架

image-20230121052624902