文章目录
- 摘要
- 一、Gorm的基本操作
- 1.1 定义结构体模型
- 结构标签
- 关联的结构标签
- 1.2 连接数据库
- 1.3 "绑"
- 1.4 "增"
- 1.5 "查"
- 1.6 "改"
- 1.7 "删"
摘要
Gorm是go语言中操作mysql数据库的开发框架,该框架可以将程序中结构体的字段和mysql数据库键值对中的"键"绑定,让我们不必再专门编写sql语句操作数据库,可以操作结构体将数据存入数据库。
一、Gorm的基本操作
本节讲的是Gorm如何绑定结构体,对数据库进行增删查改的基本操作。
主要流程是:
- 定义结构体模型;
- 用
gorm.open()
连接数据库; - 用
db.AutoMigrate()
将结构体模型与数据库表绑定,使其一一对应; - 用
db.Create()
创建数据表或者添加数据;
1.1 定义结构体模型
在定义结构体模型时,可以加上一些标签,该标签是为了让数据库知道,该结构体字段是主键、数据类型等等,如:
type Strudent struct {
ID int `gorm:"PRIMARY_KEY"` //主键约束
Name string `gorm:"type:varchar(20)"` //类型为varchar(20)
Age uint
}
Grom默认将字段名为"ID"作为主键,故可写成也可写成:
type Strudent struct {
ID int //Grom默认将字段名为"ID"作为主键
Name string `gorm:"type:varchar(20)"` //类型为varchar(20)
Age uint
}
- Grom会默认表名为结构体名的复数,也就是students;
- 默认列名为结构体字段的小写形式,如结构体字段为Age,则该字段对应的默认列名为age;
结构标签
关联的结构标签
1.2 连接数据库
连接前准备: 导入gorm和mysql驱动(默认已经安装mysql):
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
用gorm.open
连接mysql数据库(默认已经创建了名叫test1数据库):
db, err = gorm.open("mysql", "root:123456@(127.0.0.1:3306)/test1?charset=utf8mb4&parseTime=True&Local")
连接成功,用db接收返回的数据库操作实例(*gorm DB);后面增删查改都是调用该实例的函数操作。
1.3 “绑”
用db.AutoMigrate()
将结构体模型与数据库表绑定,使其一一对应,该过程也叫”自动迁移“:
db.AutoMigrate(&Student)
1.4 “增”
在添加数据前需要实例化结构体:
stu1 := Student{Name:"张三", Age:"66"}
然后用db.Create()
创建表,若表已存在则向表中添加数据:
db.Create(&stu1)
执行两次的结果:
1.5 “查”
单条数据查询db.First(&s)
,并将查询是数据存入s中:
var s Student
db.First(&s)
查询全部数据db.Find()
,并将查询是数据存入s中:
- 查询多条记录需要定义一个结构体数组存储查找的数据
var ss []Student
- 查找数据存放在ss中:
db.Find(&ss)
查找结果:
1.6 “改”
修改数据表中内容首先需要定义个含有主键结构体model类:
s := Student{ID: 2}
再用db.Model(&s).Update()
更新数据(注意只会更新再Update()括号内修改过的内容):
db.Model(&s).Update("Name":"王小五")
1.7 “删”
批量删除:
- 通过db.Find(&s)查找,找到数据表中所有元素,存入s中;
var s []Student
db.Find(&s)
- 用db.Where().delete()删除符合条件是所有元素;
db.Where("name like ?", "%四").Delete(&s)