01.理解 database/sq
dotobase/sgl 的基本用法,设计原理,基础概念介绍
基本用法-Quick Start
设计原理
02.GORM 使用简介
GORM 的基本用法,Model 定义,惯例约定,关联操作
背景知识
“设计简洁、功能强大、自由扩展的全功能 ORM”
-
设计原则: API 精简、测试优先、最小惊讶、灵活扩展、无依赖 可信赖
-
功能完善:
- 关联:一对一、一对多、单表自关联、多态; Preload、Joins 预加载、级联删除;关联模式;自定义关联表
- 事务: 事务代码块、嵌套事务、Save Point
- 多数据库、读写分高、命名参数、Map、子查询、分组条件、代码共享、SQL表达式(查询、创建、更新)、自动选字段、查询优化器
- 字段权限、软删除、批量数据处理、Propared Stmt、自定义类型、命名策略、虚拟字段、自动 tack 时间、SQL Buildor、Loggor
- 代码生成、复合主键、Constraint、Prometheus、Auto Migration、真·跨数据库兼容...
- 多模式灵活自由扩展
- Developer Friendly
基本用法
基本用法-CRUD
模型定义
模型定义-惯例约定
约定优于配置
- 表名为 struct name 的 snake cases 复数格式
- 字段名为 field name 的 snake case 单数格式
- ID /ld 字段为主键,如果为数字,则为自增主键
- CreatedAt 字段,创建时,保存当前时间
- UpdatedAt 字段,创建、更新时,保存当前时间
- gorm.DeletedAt 字段,默认开启 soft delete 模式
一切都可配置 gorm.io/docs/conven…
关联介绍
关联操作 - CRUD
关联操作 - Preload / Joins预加载
关联操作 - 级联删除
03.GORM 设计原理
SOL 生成,扩展机制,ConnPool, Dialectar 等
SQL是怎么生成的?
为什么?
- 自定义Clause Builder
- 方便扩展 Clause
- 自由选择 Clauses
插件是如何工作的?
为什么?——灵活定制&自由扩展
- 多租户
- 多数据库、读写分离
- 加解密、混沌工程
ConnPool是什么
Dialector是什么?
04.GORM 最佳实践
数据序列化与SQL表达式
批量数据操作
代码复用、分库分表、Sharding
混沌工程
Logger/Trace
Migrator
Gen生成
安全问题
GORM 最佳实践,企业级开发,FAQ 等