使用 GORM(Go 的 ORM 库)连接数据库 | 青训营

105 阅读3分钟

使用 GORM 连接数据库并实现增删改查操作

介绍

GORM 是 Go 语言中常用的 ORM(对象关系映射)库,它提供了简单易用的 API,可以方便地进行数据库操作。本文将介绍如何使用 GORM 连接数据库,并实现增删改查操作。

安装

首先,需要安装 GORM。在终端中运行以下命令:

shell复制代码
go get -u gorm.io/gorm

同时还需要安装适用于所使用数据库的 GORM 驱动程序。例如,如果使用 MySQL 数据库,可以运行以下命令来安装 MySQL 驱动程序:

shell复制代码
go get -u gorm.io/driver/mysql

连接数据库

在开始之前,确保你已经在本地安装了所需的数据库,并创建了一个数据库。接下来创建一个 db.go 文件,并编写以下代码来连接到数据库:

go复制代码
package main

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

func ConnectDB() (*gorm.DB, error) {
    dsn := "user:password@tcp(localhost)/mydatabase?charset=utf8mb4&parseTime=True&loc=Local"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        return nil, err
    }
    
    return db, nil
}

请注意替换 dsn 变量中的 userpasswordmydatabase 为数据库凭据和数据库名称。这个函数将返回一个 *gorm.DB 对象。

创建模型

在 GORM 中,可以使用结构体来定义数据库表。

下面创建一个 user.go 文件,并编写以下代码来定义一个名为 User 的模型:

go复制代码
package main

import "gorm.io/gorm"

type User struct {
    gorm.Model
    Name  string
    Email string
}

该结构体包含了 GORM 提供的 gorm.Model 字段,它会自动添加 idcreated_atupdated_at 字段到数据库表中。

增删改查操作

创建记录

要创建一个新的用户记录,可以编写以下代码:

go复制代码
func CreateUser(db *gorm.DB, user *User) error {
    result := db.Create(user)
    if result.Error != nil {
        return result.Error
    }
    
    return nil
}

这个函数接收一个 *gorm.DB 对象和一个 *User 对象作为参数,并使用 Create 方法将用户记录插入到数据库中。

查询记录

要查询数据库中的所有用户记录,可以编写以下代码:

go复制代码
func GetAllUsers(db *gorm.DB) ([]User, error) {
    var users []User
    result := db.Find(&users)
    if result.Error != nil {
        return nil, result.Error
    }
    
    return users, nil
}

这个函数接收一个 *gorm.DB 对象作为参数,并使用 Find 方法将所有用户记录检索出来。

更新记录

要更新数据库中的用户记录,可以编写以下代码:

go复制代码
func UpdateUser(db *gorm.DB, user *User) error {
    result := db.Save(user)
    if result.Error != nil {
        return result.Error
    }
    
    return nil
}

这个函数接收一个 *gorm.DB 对象和一个 *User 对象作为参数,并使用 Save 方法将用户记录更新到数据库中。

删除记录

要删除数据库中的用户记录,可以编写以下代码:

go复制代码
func DeleteUser(db *gorm.DB, id uint) error {
    result := db.Delete(&User{}, id)
    if result.Error != nil {
        return result.Error
    }
    
    return nil
}

这个函数接收一个 *gorm.DB 对象和一个 id 参数作为参数,并使用 Delete 方法将指定用户记录从数据库中删除。

使用示例

现在已经实现了以上的增删改查操作,下面通过一个简单的示例来展示如何使用

go复制代码
package main

import (
    "fmt"
)

func main() {
    // 连接数据库
    db, err := ConnectDB()
    if err != nil {
        fmt.Println("连接数据库失败:", err)
        return
    }
    defer db.Close()
    
    // 创建用户
    user := &User{Name: "John Doe", Email: "john@example.com"}
    err = CreateUser(db, user)
    if err != nil {
        fmt.Println("创建用户失败:", err)
        return
    }
    
    // 查询所有用户
    users, err := GetAllUsers(db)
    if err != nil {
        fmt.Println("查询用户失败:", err)
        return
    }
    
    // 更新用户
    user.Name = "Jane Smith"
    err = UpdateUser(db, user)
    if err != nil {
        fmt.Println("更新用户失败:", err)
        return
    }
    
    // 删除用户
    err = DeleteUser(db, user.ID)
    if err != nil {
        fmt.Println("删除用户失败:", err)
        return
    }
}

在此示例中,首先连接到数据库,然后创建一个新的用户记录。接下来,检索所有用户记录,并更新其中一个用户的姓名。最后删除刚刚创建的用户记录。