Go框架之Gorm | 青训营笔记

204 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天。

Gorm是一个操作数据库的orm框架,有着非常丰富的开源拓展。

Gorm有着一些特殊的约定:

1 Gorm使用名为ID的字段作为主键。

2 GOrm使用结构体的蛇形复数作为表名。

3 字段名的蛇形作为列名。

4 在gorm.Model中,包含CreatedAt、UpdatedAt 字段作为创建和更新时间。

接下来是gorm的一些基本使用.

上面是定义gorm的连接池,mysql.Config是处理连接数据库的信息,这里以mysql为例。gorm.Config是配置gorm,由于gorm是默认复数表,所以如果需要单数表则需要通过 SingularTable: true,改成单数形式。除此之外,还可以配置连接池的最大连接数量、复用时间等。

接下来是gorm的一些简单使用,注意:gorm是支持链式操作的。

生成表操作:

image.png 首先定义一个User结构体,作为表的映射。通过globalDb.Migrator().CreateTable(&User{}) //为结构体实例User创建一个表user。

插入操作:

image.png

使用 globalDb.Migrator().HasTable()判断表是否存在,如果表存在则插入值,不存在则创建表再插入。

更新操作:

image.png

最常用的更新操作有update和updates等。update一般用于更新单列,当表中有字段为空时会引起错误;updates用于更新多列,也可以搭配选定字段或者忽略字段更新。

删除操作:

image.png

删除分为永久删除(即硬删除)和软删除,gorm默认:当使用gorm.deletdat字段(这个字段包含在gorm.Model中),会自动获得软删除的功能。即当调用Delete时,记录并不会从数据库中真正的删除,若要永久删除某个数据,可以添加Unscoped。

查询操作:

image.png

sql构建器:

image.png

会话模式:

image.png