这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记。
1.理解database/sql
1.1 基本用法
import driver,使用driver+DSN初始化DB连接
1.2 设计原理
应用程序-操作接口-database/sql-连接接口/操作接口-数据库
DB连接的几种类型:直接连接/Conn;预编译/Stmt;事务/Tx
2.GORM基础使用
2.1 背景
1.设计原则:API精简、测试优先、最小惊讶、灵活扩展、无依赖可信赖
2.功能完善:
关联:一对一、一对多、单表自关联、多态;Preload、Joins 预加载、级联删除;关联模式;自定义关联表
事务:事务代码块、嵌套事务、Save Point
多数据库、读写分离、命名参数、Map、子查询、分组条件、代码共享、SQL表达式(查询、创建、更新)、自动选字段、查询优化器
字段权限、软删除、批量数据处理、Prepared Stmt、自定义类型、命名策略、虚拟字段、自动track时间、SQL Buider、Logger
代码生成、复合主键、Constraint、Prometheus、Auto Migration、真·跨数据库兼容
多模式灵活自由扩展
Developer Friendly
2.2 基本使用--CRUD
2.3 模型定义—惯例约定
1.表名为struct name的snake_cases复数格式
2.字段名为fleld name的snake_case单数格式
3.ID/ld字段为主键,如果为数字,则为自增主键
4.createdAt字段,创建时,保存当前时间
5.UpdatedAt字段,创建、更新时,保存当前时间
6.gorm.DeletedAt字段,默认开启soft delete模式
2.4 关联操作
1.Preload/Joins预加载 2.级联删除
3.GORM设计原理
3.1 SQL
1.SELECT 2.FROM 3.WHERE 4.ORDER BY 5.LIMIT 6.FOR
3.2 插件
1.Create 2.Query 3.Update 4.Delete 5.Row 6.Raw
3.3 ConnPool
查找缓存的预编译SQL;未找到,将收到的SQL和Vars预编译;使用缓存的预编译SQL执行
3.4 Dialector
1.定制SQL生成 2.定制GORM 插件 3.定制ConnPool 4.定制企业特性逻辑
4.GORM最佳实践
4.1 SQL表达式更新创建查询与数据序列化
4.2 批量数据操作
1.批量创建/查询 2.批量更新 3.批量数据加速操作
4.3 代码复用、分库分表、Sharding
4.4 混沌工程/压测
4.5 Logger/Trace
4.6 Migrator—数据库迁移管理
4.7 Gen代码生成/RAW SQL
4.8 安全问题—SQL注入