这是我参与「第三届青训营 -后端场」笔记创作活动的第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实践有了更深刻的了解。