GORM设计原理

80 阅读2分钟

GORM设计原理

01、理解database/sql

1.1基本用法--Quick Start

1.png 代码解析: 行3-9:import driver实现,使用driver+DSN初始化DB连接

行10-14:执行一条SQL,通过rows取回返回的数据,处理完毕,释放连接

行16-26:数据、错误处理

行28-30:错误处理

1.2、设计原理 2.png DB连接的几种类型:直接连接/Conn,预编译/stmt,事务/Tx 处理返回数据的几种方式: Exec /ExecContext -Result Query QueryContext -Rows (Columns) QueryRow/QueryRowContext->Row(Rows简化)

02、GORM基础使用

2.1背景知识

3.png 设计原则:API精简,测试优先,最小惊讶,灵活扩展,无依赖,可信赖 功能完善: 关联:一对一、一对多、单表自关联、多态;Preload、Joins预加载、级联删除;关联模式;自定义关联表 事务:事务代码块、嵌套事务、Save Point 多数据库、读写分离、命名参数、Map、子查询、分组条件、代码共享、SQL表达式(查询、创建、更新)、自动选字段、查询优化器 字段权限、软删除、批量数据处理、Prepared Stmt、.自定义类型、命名策略、虚拟字段、自动track时间、SQL Builder、Logger 代码生成、复合主键、Constraint、Prometheus、Auto Migration、真·跨数据库兼容… 多模式灵活自由扩展 Developer Friendly

2.2基本用法--CRUD

4.png 5.png 2.3模型定义--惯例约定

6.png 约定优于配置 表名为struct name的snake cases复数格式 字段名为field name的snake_case单数格式 ID/Id字段为主键,如果为数字,则为自增主键 CreatedAt字段,创建时,保存当前时间 UpdatedAt字段,创建、更新时,保存当前时间 gorm.DeletedAt字段,默认开启soft delete模式

2.4关联介绍

7.png 关联操作--CRUD

8.png

关联操作--级联删除

9.png 3.1 SQL是怎么生成的 3.1.png GORM API方法添加Clauses至GORM Statement 3.1.1.png