-
课前准备\
-
知道什么是数据库、什么是 SQL\
-
知道如何使用 database/sql 建立连接、使用\
-
了解 DSN 是什么\
-
对 GORM 有个简单的认知\
-
-
理解 Database/SQL\
-
Database/SQL 的基本用法\
- 使用driver+DSN初始化DB连接\
- 执行一条SQL,通过rows获取返回的数据\
- 处理完毕需要释放连接\
- 数据、错误处理\
-
设计原理\
- 应用程序\
- 操作接口\
- database/sql\
- 连接/操作接口\
- 数据库\
-
db连接的几种类型\
- 直接连接/conn\
- 预编译/stmt\
- 事务/tx\
-
处理返回数据的几种方式\
- exec/exec context->result\
- query/query context->rows(columns)\
- quert row/query row context->row(rows简化)\
- 基础概念\
-
-
GORM 的使用简介\
-
背景知识\
-
设计原则\
- api精简\
- 测试优先\
- 最小惊讶\
- 灵活扩展\
- 无依赖\
- 可信赖\
-
功能完善\
- 关联:一对一、一对多、单表自关联、多态; Preload、 Joins 预加载、级联删除;关联模式;自定义关联表\
- 事务:事务代码块、嵌套事务、Save Point\
- 多数据库、读写分离、命名参数、Map、 子查询、分组条件、代码共享、SQL 表达式(查询、创建、更新)、自动选字段、查询优化器\
- 字段权限、软删除、批量数据处理、Prepared Stmt、自定义类型、命名策略、虚拟字段、自动track时间、SQL Builder、Logger\
- 代码生成、复合主键、Constraint、 Prometheus、 Auto Migration、真·跨数据库兼容...\
- 多模式灵活自由扩展\
- developer friendly\
-
-
GORM 的基本用法\
- crud\
- Model 定义\
-
惯例约定\
- 一切皆可配置\
-
关联操作\
- preload/joins预加载\
- 级联删除\
-
-
GORM 的设计原理\
-
原理\
- 应用程序\
- GORM\
- 操作接口\
- database/sql\
- 连接/操作接口\
-
SQL 是怎么生成的\
-
sqlstatement\
- select clause\
- from clause\
- where clause\
- order by clause\
- limit clause\
- for clause\
- gorm api方法添加clauses至gorm statement\
- gorm finish方法执行gorm statement\
- 自定义builder\
- 扩展子句\
- 选择子句\
-
-
插件是怎么工作的\
- 多租户\
- 多数据库、读写分离\
- 加解密、混沌工程...\
- ConnPool 是什么\
- Dialector\
-
-
GORM 最佳实践\
-
数据序列化和sql表达式\
- sql表达式更新创建\
- sql表达式查询\
- 数据序列化\
-
批量数据操作\
- 批量创建、查询\
- 批量更新\
- 批量数据加速操作\
- 代码复用、分库分表、sharding\
- 混沌工程、压测\
- logger/trace\
-
migrator\
- 数据库迁移管理\
- 数据库迁移\
-
gen代码生成/raw sql\
- gen\
- raw sql\
- 安全\
-