一. 理解database/sql
1.基本用法——Quick Start
01.处理完取返回的数据时,需要释放链接,不然可能导致资源泄露。
02.易遗漏的错误
-
-
2.设计原理
01.连接池的管理方法
- 连接池配置
- 连接池状态
02.DB连接的几种类型
- 直接连接, Conn
- 预编译, Stmt
- 事务/ Tx
03.处理返回数据的几种方式
- Exec / ExecContext > Result
- Query / QueryContext > Rows (Columns)
- QueryRow / QueryRowContext > Row (Rows简化)
二. GORM使用简介
“ 设计简洁、功能强大、自由扩展的全功能ORM ”
1.基本用法——CRUD
2.Model定义
3.惯例约定
一切都可配置
★表名为struct name的snake_ cases 复数格式
★字段名为field name的snake_ case 单数格式
★ID/Id字段为主键,如果为数字,则为自增主键
★CreatedAt字段,创建时,保存当前时间
★UpdatedAt字段,创建、更新时,保存当前时间
★gorm.DeletedAt字段,默认开启soft delete模式
4.关联介绍——CRUD
5.关联操作——Preload / Joins预加载
6.关联操作——级联删除
三. GORM设计原理
1.SQL生成
01.GORM API方法添加Clauses至GORM Statement
02.GORM Finisher方法执行GORM Statement
2.为什么生成SQL
-
-
- ▲ 自定义Clause Builder
-
-
-
- ▲ 方便扩展Clause
-
-
-
- ▲ 自由选择Clauses
-
1)自定义Builder
2)扩展子句
3)选择子句
3.为什么设计插件
-
-
- ▲ 灵活定制
-
-
-
- ▲ 自由扩展
-
4.插件是怎么工作的
▲ 多租户
▲ 多数据库、读写分离
▲ 加解密、混沌工程...
5.ConnPool
- 查找缓存的预编译SQL
- 未找到,将收到的SQL和Vars预编译
- 使用缓存的预编译SQL执行
6.interpolateParams=false
1.执行前预编译SQL
2.调用预编译的SQL
3.关闭预编译的SQL
7.Dialector
- 定制SQL生成
- 定制GORM插件
- 定制ConnPool
- 定制企业特性逻辑
四. GORM最佳实践
1. GORM最佳实践
01.数据序列化与SQL表达式
1】.数据序列化与SQL表达式——SQL表达式更新创建
2】.数据序列化与SQL表达式——SQL表达式查询
3】.数据序列化与SQL表达式——数据序列化
02.批量数据操作
1】.批量数据操作——批量创建/查询
2】.批量数据操作——批量更新
3】.批量数据操作——批量数据加速操作
03.代码复用、分库分表、Sharding
1】.代码复用、分库分表、Sharding——代码复用
2】.代码复用、分库分表、Sharding——分库分表
3】.代码复用、分库分表、Sharding——Sharding
04.混沌工程/压测
05.Logger/ Trace
06.Migrator
1】.Migrator——数据库迁移管理
2】.Migrator——数据库迁移
07.Gen代码生成/ Raw SQL
1】.Gen代码生成/ Raw SQL——Raw SQL
2】.Gen代码生成/ Raw SQL——Gen
08.安全
2.企业级开发
3.FAQ
五.个人感悟
-
要学的东西还有很多。
-
Keep going!
-
多敲代码。