GORM设计原理
01、理解database/sql
1.1基本用法--Quick Start
代码解析:
行3-9:import driver实现,使用driver+DSN初始化DB连接
行10-14:执行一条SQL,通过rows取回返回的数据,处理完毕,释放连接
行16-26:数据、错误处理
行28-30:错误处理
1.2、设计原理
DB连接的几种类型:直接连接/Conn,预编译/stmt,事务/Tx
处理返回数据的几种方式:
Exec /ExecContext -Result
Query QueryContext -Rows (Columns)
QueryRow/QueryRowContext->Row(Rows简化)
02、GORM基础使用
2.1背景知识
设计原则:API精简,测试优先,最小惊讶,灵活扩展,无依赖,可信赖
功能完善:
关联:一对一、一对多、单表自关联、多态;Preload、Joins预加载、级联删除;关联模式;自定义关联表
事务:事务代码块、嵌套事务、Save Point
多数据库、读写分离、命名参数、Map、子查询、分组条件、代码共享、SQL表达式(查询、创建、更新)、自动选字段、查询优化器
字段权限、软删除、批量数据处理、Prepared Stmt、.自定义类型、命名策略、虚拟字段、自动track时间、SQL Builder、Logger
代码生成、复合主键、Constraint、Prometheus、Auto Migration、真·跨数据库兼容…
多模式灵活自由扩展
Developer Friendly
2.2基本用法--CRUD
2.3模型定义--惯例约定
约定优于配置
表名为struct name的snake cases复数格式
字段名为field name的snake_case单数格式
ID/Id字段为主键,如果为数字,则为自增主键
CreatedAt字段,创建时,保存当前时间
UpdatedAt字段,创建、更新时,保存当前时间
gorm.DeletedAt字段,默认开启soft delete模式
2.4关联介绍
关联操作--CRUD
关联操作--级联删除
3.1 SQL是怎么生成的
GORM API方法添加Clauses至GORM Statement