设计模式之 Database/SQL 与 GORM 实践 | 青训营笔记

114 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第 4 篇笔记。

一、本堂课重点内容:

  • 理解 Database/SQL

    • Database/SQL 的基本用法
    • 设计原理
    • 基础概念
  • GORM 的使用简介

    • GORM 的基本用法
    • Model 定义
    • 惯例约定
    • 关联介绍
  • GORM 的设计原理

    • SQL 生成的机制
    • 插件扩展机制
    • ConnPool 扩展机制
    • Dialector 扩展机制
  • GORM 最佳实践

    • GORM 最佳时间
    • 定制企业级开发

二、详细知识点介绍:

1. 理解database/sql

1.1 基本用法-Quick Start

image.png

3~9行: import driver实现,使用driver + DSN初始化DB连接

10~14行: 执行一条SQL,荣国rows取返回的数据,处理完毕,需要释放链接

16~26行:

image.png 数据、错误处理

28~30行: 处理错误

1.2 设计原理

image.png

连接池

image.png

连接池配置 image.png

连接池状态 image.png

操作过程的实现 image.png

Driver连接接口 image.png

image.png

Driver连接接口2

image.png

image.png

image.png

2. GORM基础使用

2.1 背景知识

image.png

2.2 基本用法

image.png

image.png

CRUD 创建 image.png 查改删 image.png

2.3 模型定义

image.png

约定优于配置 image.png

2.4关联介绍

image.png

CRUD image.png

Preload/Joins预加载 image.png

级联删除 image.png

3. GORM设计原理

image.png

3.1 SQL是怎么生成的

image.png

格式转换 image.png

GORM API 方法添加Clauses至GORM Statement image.png

GORM Finisher方法执行GORM Statement image.png

image.png

自定义Builder

image.png

扩展字句

image.png

选择字句

image.png

3.2 插件是这么工作的

image.png

image.png

image.png

image.png

多租户 image.png

多数据库、读写分离 image.png

3.3 ConnPool是啥

image.png

image.png

image.png

image.png

image.png

3.4 Dialector是什么

image.png

image.png

4. GORM最佳实践

4.1 数据序列化与SQL表达式-SQL表达式更新创建

image.png

image.png

image.png

4.2 批量数据操作

批量创建/查询 image.png

批量更新

image.png

批量数据加速操作

image.png

4.3 代码复用、分库分表、Sharding

代码复用

image.png

分库分表 image.png

Sharding image.png

4.4 混沌工程/压测

image.png

image.png

4.5 Logger/Trace

image.png

4.6 Migrator

数据迁移管理 image.png

数据库迁移 image.png

4.6 Gen代码生成/RawSql

Gen image.png

RawSql image.png

4.8 安全问题

image.png