使用gorm对mysql数据库进行操作|青训营

110 阅读3分钟

使用 GORM 进行 MySQL 数据库的增删改查操作指南

GORM 是一个强大的 Go 语言 ORM(Object-Relational Mapping)库,用于简化与数据库的交互。在本文档中,我们将介绍如何使用 GORM 连接到 MySQL 数据库,并执行常见的增删改查(CRUD)操作。

目录

  1. 准备工作

    • 安装 GORM 和 MySQL 驱动
    • 创建数据库连接
  2. 数据模型定义

    • 创建结构体
    • 定义模型关系
  3. 创建记录

    • 使用 Create 方法
  4. 查询记录

    • 使用 First 方法
    • 使用 Find 方法
    • 使用 Where 条件
  5. 更新记录

    • 使用 Save 方法
    • 使用 Update 方法
  6. 删除记录

    • 使用 Delete 方法
  7. 进阶查询

    • 使用 Preload 方法
    • 使用 Joins 方法
  8. 事务处理

    • 开启事务
    • 提交事务
    • 回滚事务

1. 准备工作

安装 GORM 和 MySQL 驱动

首先,确保你已经安装了 Go 语言环境。然后,使用以下命令安装 GORM 和 MySQL 驱动:

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

创建数据库连接

在代码中导入 GORM 和 MySQL 驱动,然后使用 gorm.Open 方法创建数据库连接:

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

func main() {
    dsn := "user:password@tcp(localhost:3306)/database_name?charset=utf8mb4&parseTime=True&loc=Local"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic("Failed to connect to the database")
    }
    // 使用 db 进行后续操作
}

2. 数据模型定义

创建结构体

定义与数据库表对应的结构体,并使用 GORM 的 gorm:"column:column_name" 标签来映射字段名:

type User struct {
    gorm.Model
    Username string `gorm:"column:username"`
    Email    string `gorm:"column:email"`
}

定义模型关系

如果存在多个表之间的关联,可以在结构体中定义关联关系:

type Post struct {
    gorm.Model
    Title   string
    Content string
    UserID  uint
    User    User // Belongs To关系
}

3. 创建记录

使用 db.Create 方法来创建记录:

newUser := User{Username: "john_doe", Email: "john@example.com"}
db.Create(&newUser)

4. 查询记录

使用 First 方法

使用 db.First 方法按条件获取第一条记录:

var user User
db.First(&user, "username = ?", "john_doe")

使用 Find 方法

使用 db.Find 方法按条件获取多条记录:

var users []User
db.Find(&users, "email LIKE ?", "%example.com")

使用 Where 条件

使用 db.Where 方法指定更复杂的查询条件:

var filteredUsers []User
db.Where("username IN ?", []string{"user1", "user2"}).Find(&filteredUsers)

5. 更新记录

使用 Save 方法

使用 db.Save 方法来更新记录:

user := User{}
db.First(&user, "email = ?", "john@example.com")
user.Email = "new_email@example.com"
db.Save(&user)

使用 Update 方法

使用 db.Model 结合 Update 方法来批量更新记录:

db.Model(&User{}).Where("email LIKE ?", "%example.com").Update("email", "updated@example.com")

6. 删除记录

使用 db.Delete 方法来删除记录:

user := User{}
db.First(&user, "username = ?", "john_doe")
db.Delete(&user)

7. 进阶查询

使用 Preload 方法

使用 Preload 方法预加载关联模型数据:

var posts []Post
db.Preload("User").Find(&posts)

使用 Joins 方法

使用 Joins 方法进行联表查询:

var usersWithPosts []User
db.Joins("JOIN posts ON users.id = posts.user_id").Find(&usersWithPosts)

8. 事务处理

开启事务

使用 db.Begin 方法开启事务:

tx := db.Begin()

提交事务

使用 tx.Commit 方法提交事务:

tx.Commit()

回滚事务

使用 tx.Rollback 方法回滚事务:

tx.Rollback()

结论

使用 GORM 进行 MySQL 数据库的增删改查操作能够极大地简化开发过程。本文档涵盖了基本的操作,你可以根据项目需求进一步探索 GORM 提供的更多功能。完整的示例代码和更多详细信息可以在 GORM 官方文档中找到:gorm.io