这是我参与「第五届青训营 」伴学笔记创作活动的第 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标签为字段定义默认值
(2).数据查询
1.First的使用踩坑
使用First 时,需要注意查询不到数据会返回ErrRecordNotFound. 使用Find查询多条数据,查询不到数据不会返回错误。
2.使用结构体作为查询条件
当使用结构作为条件查询时,GORM只会查询非零值字段。这意味着如果您的字段值为0、"、false或其他零值,该字段不会被用于构建查询条件,使用Map来构建查询条件。
(3).数据更新
使用Struct更新时,只会更新非零值,如果需要更新零值可以使用Map更新或使用Select选择字段。
在处理零值时,都需要用到Map,语句如下:
更新:
.Updates(map[string]interface{}{...})
查找:
.Where(map[string]interface{}{...}.Find(&...)