后端与 Go| 青训营笔记

78 阅读2分钟

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

gorm:

1、gorm 安装:

gorm是Go语言中一款性能极好的ORM库,对开发人员先对较好。下面对于gorm的暗转进行介绍:
gorm的安装在GORM指南上gorm.io/zh_CN/docs/… 是以sqlite为例子来进行安装的,其命令为:

go get -u gorm.io/gorm 
go get -u gorm.io/driver/sqlite 

但在日常中我们使用最多的是mysql数据库,mysql数据库的安装命令:

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

2、gorm简单使用:

我们可以gorm.Open()函数来连接数据库,从而可以对数据库进行操作,完成我们对数据库的更改。例如连接mysql数据库:

db, err := gorm.Open(mysql.Open("用户名:密码@tcp(127.0.0.1:3306)/数据库名字?charset=utf8&parseTime=True&loc=Local"), &gorm.Config{})

数据库连接成功后可以使用db.Create()函数插入记录,可以通过使用db.First()查询一条记录,需要注意的是:使用First的时候,查询不到ErrRecordNotFound,而是用db.Find()查询多条数据,查询不到数据不会返回错误。使用结构体作为条件查询时,gorm只会查询非零值字段。
使用db.AutoMigrate()函数可以保持表的更新,但是不会更新索引以及现有列的类型或删除未使用的列。
使用db.HasTable(表名)可以检查表是否存在。使用db.Set()可以在创建表的时候,增加相关参数。使用db.DropTable(表名)删除表。 使用Struct更新时,只会更新非零值,如果需要更新零值可以选择使用Map更新或使用Select选择字段。
gorm使用db.Deleted()进行物理删除,同时提供了gorm.DeletedAt()用于帮助用户实现软删,用于软删除能力的Model调用Delete时,记录不会从数据库中真正删除,但gorm会将DeletedAt置为当前时间,并且不能再通过正常的查询方法找到该记录。使用Unscoped可以查询带被软删除的数据。

引用参考:

GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
Golang下的ORM框架gorm的介绍和使用 - 知乎 (zhihu.com)

总结:

本文是青训营学习中关于Go语言中gorm的笔记,初步认识了gorm。