2026-04-28 20:02:42 +08:00
|
|
|
---
|
|
|
|
|
tags: [GORM, Go, ORM, Database]
|
|
|
|
|
create time: 2026-04-28 00:00
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# GORM 知识库
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
GORM 是 Go 生态中最流行的 ORM 库,本知识库系统整理 GORM 的核心概念、进阶用法和工程实践。
|
|
|
|
|
|
|
|
|
|
## 目录索引
|
|
|
|
|
|
|
|
|
|
### 1. 基础篇
|
|
|
|
|
|
|
|
|
|
- **[01-安装与初始化](./01-安装与初始化)** — 依赖安装、DB 连接配置、全局配置项
|
|
|
|
|
- **[02-模型定义](./02-模型定义)** — struct tag 映射、字段类型、主键策略、表名规则
|
|
|
|
|
- **[03-CRUD 操作](./03-CRUD 操作)** — Create / First / Take / Find / Get 五大方法
|
|
|
|
|
|
|
|
|
|
### 2. 查询篇
|
|
|
|
|
|
2026-04-28 20:23:33 +08:00
|
|
|
- **[04-条件查询](./04-条件查询)** — Where 链式调用、Between / In / Like / 原生 SQL
|
|
|
|
|
- **[05-关联查询](./05-关联查询)** — Preload / Joins、HasOne / HasMany / BelongsTo / ManyToMany
|
|
|
|
|
- **[06-排序与分页](./06-排序与分页)** — Order / Limit / Offset / Paginate
|
|
|
|
|
- **[07-子查询与分组](./07-子查询与分组)** — Group / Having / SubQuery / 嵌套查询
|
2026-04-28 20:02:42 +08:00
|
|
|
|
|
|
|
|
### 3. 进阶篇
|
|
|
|
|
|
2026-04-28 20:23:33 +08:00
|
|
|
- **[08-事务管理](./08-事务管理)** — Tx 对象、Commit / Rollback、嵌套事务
|
|
|
|
|
- **[09-钩子函数](./09-钩子函数)** — Before / After Save、Create、Update、Delete、Find
|
|
|
|
|
- **[10-软删除](./10-软删除)** — SoftDelete 原理、Unscoped 强制查询
|
|
|
|
|
- **[11-批量操作](./11-批量操作)** — Bulk Insert / Update、Callback 机制
|
|
|
|
|
- **[12-自定义字段类型](./12-自定义字段类型)** — Scanner / Valuer 接口、JSON 字段
|
|
|
|
|
- **[13-多数据库支持](./13-多数据库支持)** — MySQL / PostgreSQL / SQLite / SQL Server
|
2026-04-28 20:02:42 +08:00
|
|
|
|
|
|
|
|
### 4. 工程实践篇
|
|
|
|
|
|
2026-04-28 20:23:33 +08:00
|
|
|
- **[14-错误处理](./14-错误处理)** — RecordNotFound、ErrRelatedExists、自定义错误判断
|
|
|
|
|
- **[15-性能优化](./15-性能优化)** — N+1 问题排查、Preload 策略、预编译语句
|
|
|
|
|
- **[16-日志与调试](./16-日志与调试)** — 慢查询监控、SQL 日志格式化
|
|
|
|
|
- **[17-迁移工具](./17-迁移工具)** — AutoMigrate / Migrator、版本化迁移策略
|
2026-04-28 20:02:42 +08:00
|
|
|
|
|
|
|
|
## 核心架构图
|
|
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
|
graph LR
|
|
|
|
|
A[GORM DB] --> B[Session]
|
|
|
|
|
B --> C[Clauses]
|
|
|
|
|
C --> D[Standalone Mode]
|
|
|
|
|
B --> E[Context]
|
|
|
|
|
E --> F[Hooks]
|
|
|
|
|
F --> G[Preload]
|
|
|
|
|
G --> H[Resolver]
|
|
|
|
|
H --> I[Driver]
|
|
|
|
|
I --> J[(Database)]
|
|
|
|
|
|
|
|
|
|
style A fill:#4FC08D,color:#fff
|
|
|
|
|
style J fill:#A0AEC0,color:#fff
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 关联笔记
|
|
|
|
|
|
|
|
|
|
- [[hhs/Go/]]
|