使用 GORM 连接数据库并实现 CRUD 操作  | 青训营

155 阅读2分钟

使用 GORM 连接数据库并实现 CRUD 操作  | 青训营

简介

GORM(Go 的对象关系映射库)提供了一个强大的 ORM 解决方案,可以让 Go 语言程序更容易的使用数据库。它内置了创建表、查询数据、插入数据等常见操作。

在本文中,我们将使用 GORM 来:

  • 连接 MySQL 数据库
  • 定义模型
  • 实现 CRUD(Create/Read/Update/Delete) 操作

安装 GORM

使用 go get 命令安装 GORM 和 MySQL 驱动:

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

连接数据库

在开始使用 GORM 之前,我们需要先建立与数据库的连接。在 Go 语言中,我们可以通过 GORM 提供的 Open() 函数来连接数据库。

首先导入需要的包:

import (
  "gorm.io/gorm"
  "gorm.io/driver/mysql"
)

然后使用如下代码连接数据库:

dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  • dsn 是数据源名称,包含了数据库的访问信息,需要自行替换实际的数据库信息
  • 使用 mysql.Open 打开连接
  • gorm.Open 获得一个 ORM 对象用于操作数据库

定义模型

比如,我们要操作用户表,可以定义一个 User 模型:

type User struct {
  gorm.Model
  Name string
  Email string
}
  • gorm.Model 包含 ID、CreatedAt、UpdatedAt、DeletedAt 字段
  • 然后定义用户名和邮箱字段

自动建表

package main
​
import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)
​
// 用户模型
type User struct {
    gorm.Model
    Name string
    Email string
}
​
func main() {
​
    // 连接数据库
    dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
​
    if err != nil {
        panic("failed to connect database")
    }
​
    // 自动建表
    db.AutoMigrate(&User{})
​
    // 插入数据
    db.Create(&User{Name: "张三", Email: "zhangsan@example.com"})
​
}

主要步骤:

  1. 定义模型 struct,并且在 struct 中嵌入 gorm.Model 获得一些默认字段
  2. 使用 db.AutoMigrate(&User{}) 会自动创建表,如果表已存在,则根据 struct 添加任何缺失的字段
  3. 最后我们用 db.Create 插入一条数据,至此整个自动建表和 CRUD 流程完成。

GORM会自动命名表名为结构体名称的复数形式,也支持自定义表名。只需在模型struct上使用Table标签指定表名即可。

CRUD 操作

创建数据

使用 Create 方法创建新记录:

user := User{Name: "张三", Email: "zhangsan@example.com"}
​
db.Create(&user)

这将在 user 表中插入一条记录。

查询数据

使用 First 查询第一条记录:

var user User
db.First(&user) 

使用 Find 查询多条记录:

var users []User
db.Find(&users)

更新数据

先查询记录,然后修改结构体字段,最后保存:

var user User
db.First(&user)
user.Name = "李四"
db.Save(&user)

删除数据

db.Delete(&user)

总结

GORM 为 Go 提供了功能强大的 ORM 支持,使用它可以大大简化数据库操作。本文演示了使用 GORM 连接数据库、定义模型、实现增删改查的基本用法。GORM 还支持高级功能如关联、事务等,可以开发复杂的数据库应用。