GORM简介 | 青训营笔记

179 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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&...&paramN=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运行原理还需继续学习。