DATABASE/SQL与GORM设计与实践 | 青训营笔记

190 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记,笔记的内容是关DATABASE/SQL与GORM设计与实践的。

1.理解database/sql

基本用法是使用import driver实现,使用driver+DSN初始化DB连接,通过rows取回返回的数据以后需要释放连接。

设计原理首先要考虑应用程序和database/sql的上层应用和操作接口,以及database/sql和数据库的连接接口和操作接口。还可以通过连接池将三者连接起来。

2.gorm使用简介

gorm是设计简洁、功能强大、自由扩展的全功能ORM。

其设计原则有:API精简、测试优先、最小惊讶、灵活扩展、无依赖和可信赖等。

基本用法有CRUD等,同时根据模型定义可以了解到具体的实现逻辑。

模型的定义有着惯例约定,约定高于配置,表名为struct name的snake_cases复数形式。

字段名为field name的snake_case单数形式。

ID|id字段为主键,如果为数字则为自增主键。

createdAt字段,创建时,保存当前时间。

updatedAt字段,创建更新时保存当前时间。

gorm.DeletedAt字段,默认开启soft delete模式。

同时关联操作有preload/joins 预加载和级联删除等功能。

3.gorm设计原理

1)SQL是怎么生成的

通过gorm api方法添加clauses至gorm statement执行后可以自定义clause builder、扩展字句和选择字句。

2)插件是怎么工作的

Finisher Method 到 决定Statement类型 到 执行 Callbacks 到 生成SQL并执行。

3)connpool是什么

连接池的作用把多个应用程序和database/sql和数据库连接起来,方便交互。

4)Dialector是什么

Dialector可以定制SQL生成、定制gorm插件,定制connpool和定制企业特性逻辑等功能。

4.gorm最佳实践

通过实例对gorm的应用有了更加深刻的了解。

在学习完这节课程的内容后,我对database/sql和gorm实践有了更深刻的了解。