1 ORM简介
1.1 ORM 初步了解
ORM:Object Relational Mapping(对象 关系 映射)
- 对象:程序中的对象/示例,例如Go语言中的结构体实例
- 关系:关系型数据库,例如Mysql
GORM功能:可以用程序中的ORM语句替换对数据库进行操作的Sql语句。
1.2 数据表与结构体的映射关系
Mysql数据与GO语言结构体对应关系:
- 数据表<——>结构体
- 数据行<——>结构体实例
- 字段<——>结构体字段
1.3 GORM优缺点
- 优点: 提高开发效率
- 缺点: 牺牲执行性能 牺牲灵活性 弱化SQL能力
2 GORM连接数据库
2.1 GORM和Mysql安装
安装GORM:
go get -u github.com/jinzhu/gorm
安装Mysql:
go get -u gorm.io/gorm go get -u gorm.io/driver/mysql
2.2 GORM连接数据库
使用 gorm.Open 函数连接数据库:
db, err := gorm.Open("mysql", "root:root@(127.0.0.1:3306)/test_tianshuai?charset=utf8mb4&parseTime=True&loc=Local")
if err != nil {
panic("Failed to connect to database")
}
defer db.Close()
其中root:root@(127.0.0.1:3306)包含了数据库的用户名、密码、地址和端口信息。
3 创建数据表
3.1 定义结构体
本文采用定义模型来映射数据库中的表。模型可以是一个结构体,根据1.2中介绍的结构体中的字段对应数据库表中的列关系,首先定义一个 UserInfo 结构体来表示用户表:
type UserInfo struct {
ID uint
Name string
Gender string
Hobby string
}
3.2 结构体转数据表
利用db.AutoMigrate将结构体自动迁移至数据表并进行对应:
db.AutoMigrate(&UserInfo{})
查看数据表结构:
4 增删改查操作
4.1 增
使用 Create 方法创建一条新的数据:
u1 := UserInfo{1, "小明", "男", "羽毛球"}
db.Create(&u1)
查看数据表:
4.2 查
使用 First 方法查询数据表中的第一条数据(Find方法可以查询其他数据):
var u UserInfo
db.First(&u)
fmt.Printf("u:%#v\n", u)
输出:
4.3 改
使用 Update 方法更改数据表中的数据:
db.Model(&u).Update("hobby", "蛙泳")
fmt.Printf("u:%#v\n", u)
查看数据表:
输出:
4.4 删
使用 delete 方法删除数据表中的数据:
db.Delete(&u)
查看数据表:
5 完整实例
以下代码展示了如何使用GORM连接数据库并实现增删改查基本操作:
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
// UserInfo -->数据表
type UserInfo struct {
ID uint
Name string
Gender string
Hobby string
}
func main() {
//连接Mysql数据库
db, err := gorm.Open("mysql", "root:root@(127.0.0.1:3306)/test_tianshuai?charset=utf8mb4&parseTime=True&loc=Local")
if err != nil {
panic("Failed to connect to database")
}
defer db.Close()
//创建表 自动迁移(把结构体和数据表进行对应)
db.AutoMigrate(&UserInfo{})
//创建数据行
u1 := UserInfo{1, "小明", "男", "羽毛球"}
db.Create(&u1)
//查询数据
var u UserInfo
db.First(&u) //查询表中第一条数据,保存到u
fmt.Printf("u:%#v\n", u)
//更新数据
db.Model(&u).Update("hobby", "蛙泳")
fmt.Printf("u:%#v\n", u)
//删除数据
db.Delete(&u)
}
6 总结
GORM 增删改查的要点:
- 定义实体类:首先需要定义一个实体类来映射数据库中的表,实体类中的属性对应表中的字段。
- 创建 GORM 对象:通过
gorm.Open()方法创建一个 GORM 对象,其中需要传入数据库驱动、数据库地址等参数。 - 定义映射关系:通过
db.AutoMigrate(&model)方法将实体类与数据库表进行映射。 - 增加数据:通过
db.Create(&model)方法向数据库中添加一条记录。 - 删除数据:通过
db.Delete(&model)方法从数据库中删除一条记录。 - 更新数据:通过
db.Update(&model)方法更新数据库中的一条记录。 - 查询数据:通过
db.Find(&models)方法从数据库中查询指定条件的记录,其中models是一个指向实体类的指针数组。 - 分页查询数据:通过
db.Paging(&page, &pageSize).Find(&models)方法实现分页查询,其中page是页码,pageSize是每页显示的记录数
本文主要参考【GORM简明教程】01 GORM连接MySQL基础示例_哔哩哔哩_bilibili,如有错误欢迎指正!