Go框架三件套 GORM | 青训营

48 阅读1分钟

GORM目前支持MySQL、SQLServer、PostgreSQL、SQLite。 image.png

创建数据

ORM表示了三个映射关系:

数据表<-->结构体

数据行<-->结构体实例

字段 <-->结构体字段

type UserInfo struct { //定义MySQL表中的结构、名称、大小及类型 
ID uint 
Name string 
Gender string 
Hobby string }

p := &Product{Code: "D42", ID: 1}

GORM查询数据

First使用时,需要注意查询不到数据会返回ErrRecordNotFound。 使用Find查询多条数据时,查询不到数据不会返回错误。

当使用结构体作为条件查询时,GORM只会查询非零字段。这意味着如果您的字段值为0、"、false或其他零值,该字段不会被使用于构建查询条件,使用Map来构建查询条件

image.png

GORM更新数据

使用Struct更新时,只会更新非零值,如果需要更新零值使用Map更新或者使用Select选择字段。 image.png

GORM删除数据

466c32fabc794277abb718a4a4547895~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp GORM提供了gorm.DeletedAt用于帮助用户实现软删

拥有软删除能力的Model调用Delete时,记录不会被从数据库中真正删除。但GORM会将DeletedAt置为当前时间,并且你不能再通过正常查询找到方法记录。

事务

对于写操作(创建、更新、删除),为了确保数据的完整性,GORM会将它们封装在事务内运行 27beb376fea948a4a863390abce5c5ef~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp