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

93 阅读2分钟

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

目标

  1. 将学到的知识应用到项目中
  2. 掌握 Hertz/Kitex/Gorm 的基本用法
  3. 通过学习实战案例,可以使用 Hertz/Kitex/Gorm 完成日常后端开发任务

1. 介绍

三件套介绍

Gorm

  • Gorm 是一个已经迭代了10年+的功能强大的 ORM 框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展 Kitex
  • Kitex 是字节内部的 Golang 微服务 RPC 框架,具有高性能,强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展。 Hertz
  • Tertz 是字节内部的 HTTP 框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性的特点

2. 三件套的使用

2.1 Gorm 的基本使用

image.png Gorm 的约定(默认)

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

2.2 Gorm 支持的数据库

Gorm 目前支持 MySQL、SQLServer、PostgreSQL、SQLLite。

image.png Gorm 通过驱动来连接数据库,如果需要连接其他类型的数据库,可以复用/自行开发驱动。

什么是DSN

2.3 Gorm 创建数据

image.png


如何使用 Upsert? 使用 clause.OnConflict 处理数据冲突

image.png


如何使用默认值? 通过使用 default 标签为字段定义默认值

image.png

2.4 Gorm 查询数据

image.png First 的使用踩坑

  • 使用First时,需要注意查询不到数据会返回 ErrRecordNotFound。
  • 使用Find查询多条数据,查询不到数据不会返回错误 使用结构体作为查询条件
  • 当使用结构体作为条件查询时,Gorm 只会查询非零值字段。这意味着如果您的字段值为 0、"、false 或其他 零值,该字段不会被用于构建查询条件,使用 Map 来构建查询条件。