这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记
GORM是一个为Go语言编写的ORM库,用以方便程序员对数据库进行操作。其拥有诸多特性,包括全功能对象关系映射,Preload、Joins预加载,事务、嵌套事务,关联等。
SQL语言
一般来说,对关系型数据库的操作,使用的是SQL语言(结构化查询语言),其中又分为DDL(数据定义语言)、DML(数据操纵语言)、DCL(数据控制语言)。
DDL:用以创建、修改、删除数据库和表单等对象,包括create、drop、alter等命令。
DML:用于查询、插入、修改、删除数据表中的数据内容,包括select、insert、update、delete命令。
DCL:用来确认或取消对数据表内容做出的变更,包括commit、rollback、grant、revoke等命令。
GORM
顾名思义,GORM支持ORM(对象关系映射),其将对象和关系型数据库的表单的字段一一对应,形成映射关系,使用对象存储和数据库交互时使用的数据,而不需要编写SQL语句,使得编码过程更加安全高效。
安装GROM
在项目的终端输入以下语句:
//安装gorm包
go get -u gorm.io/gorm
//安装MySQL驱动
go get -u gorm.io/driver/mysql
导入GORM
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
定义数据结构
type Student struct{
gorm.Model
Name string
Gender string
Address string
}
使用gorm.Open方式连接数据库,需要先配置DSN参数,其格式如下:
[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN]
使用GORM进行数据库操作
//插入数据
db.Create(&Student{
Name: "张三",
Gender: "男",
Address: "xx省xx市xx路",
})
//查询数据
var stu Student
db.First(&stu) //查询按主键排序的第一条数据
db.First(&stu, "Name = ?", "张三") //查询"Name=张三"的数据
db.Take(&stu) //查询一条数据,不指定顺序
var stus []Student
db.Find(&stus) //查询所有数据
db.Find(&stus, "Gender = ?", "男") //查询所有Gender=男的记录
//Where()语句可以使用原生的SQL语句,例如
db.Where("Gender = ?", "男").Find(&stus)
//修改数据
stu.Address = "oo省oo市oo路"
db.Save(&stu)
//删除数据
db.Delete(&stu)
目前主要停留在熟悉使用阶段,对于更加深入的ORM运行原理还需继续学习。