5 go框架三件套 | 青训营笔记

55 阅读2分钟

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

1 课程介绍

目标 1Gorm 2 Kitex 3 Hertz

2三件套的使用 基础使用 定义gorm model 表 为 model 定义表名 连接数据库 初始化数据库链接 传递自定义配置 创建数据 查询数据 更新数据

gorm.cn/zh_CN/docs/… Gorm的约定 名为ID的字段作为主键 结构体蛇形负数作为表名 字段名蛇形作为列名 CreatedAt、UpdatedAt字段作为创建更新时间 GORM支持的数据库 MySQL、SQLServer、PostgreSQL、SQLite 通过驱动连接数据库 可复用、自行开发驱动

gorm.cn/zh_CN/docs/…

什么是DSN github.com/go-sql-driv…

GORM创建数据

upsert 使用clause.OnConflict 使用默认值 defaut标签为字段定义默认值

gorm.cn/zh_CN/docs/…

first 注意查询不到数据会返回ErrRecordNotFound find查询多条数据查询不到不会返回错误 find查询一组 查不到返回空数组

使用结构体作为查询条件 只查询非零值字段 使用Map构建查询条件

gorm.cn/zh_CN/docs/…

更新数据 Struct更新是 只会更新非零值 更新零值可以使用Map或使用Select

gorm.cn/zh_CN/docs/…

GORM提供了gorm.DeletedAt用于帮助用户实现软删 拥有软删除能力的Model调用Delete时,记录不会被从数据库中真正删除。但GORM 会将DeletedAt置为当前时间,并且你不能再通过正常的查询方法找到该记录。 使用Unscoped可以查询到被软删的数据

gorm.cn/zh_CN/docs/…

GORM事务 Gorm提供了 Begin、Commit、Rollback方法用于使用事务 Gorm提供了Tansaction方法用于自动提交事务,避免用户漏写Commit、Rollbcak。

gorm.cn/zh_CN/docs/…

GORM在提供了CURD的Hook 能力。 Hook是在创建、查询、更新、删除等操作之前、之后自动调用的函数。 如果任何Hook返回错误,GORM将停止后续的操作并回滚事务。

gorm.cn/zh_CN/docs/…

GORM性能提高

对于写操作(创建、更新、删除),为了确保数据的完整性,GORM会将它们封装在事务内运行。但这会降低性能,你可以使用SkipDefaultTransaction关闭默认事务。

使用PrepareStmt 缓存预编译语句可以提高后续调用的速度

https:/lgorm.cn/zh_CN/docs/performance.html

image.png 3实战案例