后端与 GORM | 青训营笔记

61 阅读2分钟

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

1.GORM是什么?

GORM是一个用go语言编写的ORM框架

2.ORM是什么?

Object-Relationl Mapping,即对象关系映射,这里的Relationl指的是关系型数据库

它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。

3.DSN是什么?

该名称是应用程序用于请求连接到 ODBC 数据源的名称。 换句话说,它是表示 ODBC 连接的符号名称。 当建立 ODBC 连接时,它将存储数据库名称、目录、数据库驱动程序、用户 Id、密码等等连接详细信息

4.GORM使用过程中的小tips

(1).创建数据

如何使用Upsert?

使用clause.OnConflict处理数据冲突

//以不处理冲突为例,创建一条数据

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

db.Clause.OnConflict{DoNothing:true}).Create(&p)

如何使用默认值?

通过使用default标签为字段定义默认值

image.png

(2).数据查询

1.First的使用踩坑

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

2.使用结构体作为查询条件

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

image.png

(3).数据更新

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

image.png

在处理零值时,都需要用到Map,语句如下:

更新: .Updates(map[string]interface{}{...})

查找: .Where(map[string]interface{}{...}.Find(&...)