这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记。近期,我们进一步学习了GO语言应用实践、高质量编程与性能调优实战,高性能GO语言发行版优化与落地实践与SQL与GORM实践。经过这段时间的学习,我对GO语言已经有了进一步的认识,对语法也更加熟悉了。我认为数据库技术是后端技术中最重要、最常用、变化最大的部分,因为数据库设计的好坏能过直接决定一个程序的质量。sql语句写的质量也能够直接决定程序运行的效率。GORM内部会区分v1和v2两个版本,其中V1的包导入路径为github.com/jinzhu/gorm V2的包导入路径为gorm.io/gorm 通常可以用结构体进行创建,在查询过程中,可以直接调用GORM的方法进行查询,GORM自带有Find、Where、Limit、Select、Order等方法,其中Find可以直接查询返回表中所有数据,Where可以限定查询条件,Limit可以限定返回数量,Select可以查询部分字段,Order可以对数据按照某种规则进行排序,在普通情况下,只需要用Find+Where方法结合,就可以实现普通查询,如果需要更好的性能、可以引用Select查询部分字段从而节约资源;在复杂查询时,使用Join进行拼接查询,就可以进行多表查询,更新操作需要用到Select+Updates指定更新字段,利用Where指定更新条件;删除主需要使用Delete方法加上Where限定条件进行删除即可。Builder设计模式,在面对复杂场景中,Builder设计模式扩展性很好,可以分为存储数据和处理数据;GORM采用了chainable+finisher的两段实现,前者保存SQL相关数据,后者拼接SQL并执行。