这是我参与「第五届青训营 」伴学笔记创作活动的第3天。今天学习go框架的相关内容(go框架的相关内容打算在今明两天一起完成)。
go框架一共分为三种:Hertz/KiTex/Gorm。
其中gorm是ORM框架,KiTex是微服务RPC框架,Hertz是HTTP框架。
首先先从gorm开始学起。gorm的框架大致如下图所示。
上面这张图,介绍了gorm框架如何和数据库进行连接,并对数据库进行增删改查的操作。目前,gorm支持mysql、sqlserver等数据库。它是通过驱动来连接数据库的。
而有关gorm如何创建数据,主要有以下需要注意的地方:
一般我们会使用create字段来创建。如果create发现主键冲突了,我们会通过clause.OnConfilct来处理数据的冲突。如果我们需要使用默认值,可以通过使用default来使用。
而有关gorm查询数据,可以通过如下图部分的内容来了解。
其中主要提到了两个问题:一个是first的使用踩坑,一个是使用结构体作为查询条件。first在使用的时候,如果查询不到数据,是会返回错误的,但如果是find函数(查询多条数据),查询不到数据是不会返回错误的,只会返回一个空数组。而如果使用结构体查询数据的时候,如果结构体内部存在0值,是不会被构建成查询条件的,所以这时候需要通过map来查询。这两个问题说明了,一般来说使用find查询会效率更高,而map和结构体查询的效率会比较低。
而有关gorm的更新数据部分,可分为更新单个列和更新多个列。更新单个列,我们就使用update来解决。如果更新多个列,如果使用struct更新,只会更新非零值,而如果使用update,就都会更新。而我觉得有关gorm最独特的部分,在于gorm提供了一个sql语句更新的API接口。
而有关gorm的删除数据部分,涉及到物理删除和软删除。
(未完待续)