GORM设计与实践 | 青训营笔记

113 阅读1分钟

GORM设计与实践 | 青训营笔记

GROM:设计简洁、功能强大、自由拓展的全功能ORM

基本用法:

操作数据库

  • 创建 image.png
  • 读取 image.png

模型定义:

image.png 约定优于配置

  • 表名为struct name的snake_cases复数格式
  • 字段名为field name的snake_cases单数格式
  • ID/id字段为主键,如果为数字,则为自增主键
  • CreatedAt字段,创建时,保存当前时间
  • gorm.DeletedAt字段,默认开启soft delete模式

一切配置都可以更改

关联介绍:

关联的关系,自定义主键 image.png

关联操作

CRUD

image.png

增、删、查、改、批量操作。可以方便管理数据

Preload/Joins 预加载

image.png

方便查找数据

级联删除

image.png

保证没有孤儿数据,每一个数据都是有用的

有分为是否根据数据库的依赖来删除

设计原理:

ConnPool

image.png

  • 查找缓存的预编译SQL
  • 未找到,将收到的SQL和Vars预编译
  • 使用缓存的预编译SQL执行

Dialector

image.png

最佳实践

数据序列化与SQL表达式

image.png

image.png

  • GROM提供了SQL表达式的支持

批量数据操作

批量创建/查询

image.png

批量更新

image.png

批量数据加速操作

image.png

  • 方法1:关闭默认事物:输入一些参数来关闭事物,以此来提升性能
  • 方法2:'SkipHooks'跳过运行Create时的Hook方法
  • 方法3:Prepared Statement 预编译SQL语句

代码复用

image.png

Migrator

image.png

image.png

Gen代码生成

管理生成一些SQL image.png