DatabaseSQL与GORM实践(下)

132 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

GORM设计原理

  1. 操作过程

image-20220629161235201

SQL的生成

image-20220629165323900

image-20220629211127463

image-20220629211229221

image-20220629211322939

自定义Clause Builder

image-20220630163149179

方便扩展Clause

image-20220630163405647

自由选择Clauses

image-20220630163448126

  • 主要是因为不同的数据库甚至不同版本的数据库支持的SQL不同,GORM这么处理之后就可以很方便的解决这个问题。

  • 方便扩展子句

插件是怎么工作的

  • Fiisher Method -> 决定 Statement类型 -> 执行Callbacks -> 生成 SQL并执行

image-20220630205031655

多租户 自动通过租户ID实现操作的过滤。 多数据库、读写分离

image-20220630211722378

ConnPool

理想情况

image-20220630211850767

实际操作

image-20220630212521103

读写分离模式: image-20220630212554986

举例: image-20220630212814964

还可通过插件做出扩展

image-20220630212949329

Dialector

解决功能扩展问题

image-20220630213235857

GORM最佳实践

image-20220630213429554

  • 数据序列化与SQL表达式

    • SQL表达式查询
    • 数据序列化
  • 批量数据操作

    • 批量创建/查询
    • 批量更新
    • 批量数据加速操作