使用 GORM 连接数据库及实现 CRUD 操作 | 豆包MarsCode AI刷题

116 阅读2分钟

使用 GORM 连接数据库及实现 CRUD 操作

引言

GORM 是 Go 语言中一个流行的 ORM(对象关系映射)库,它提供了一种方便的方式来处理数据库操作,使得开发者可以用 Go 的方式来操作数据库。本文将介绍如何使用 GORM 连接数据库,并实现基本的增删改查(CRUD)操作。

环境准备

在开始之前,请确保你已经安装了 Go 语言环境和所需的数据库(本文以 MySQL 为例)。同时,你需要安装 GORM 库和 MySQL 驱动。

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

连接数据库

首先,你需要创建一个数据库和用户,然后在 Go 代码中配置连接。

1. 创建数据库和用户

在 MySQL 中执行以下命令创建数据库和用户:

CREATE DATABASE example_db;
CREATE USER 'gorm_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON example_db.* TO 'gorm_user'@'localhost';
FLUSH PRIVILEGES;

2. 配置 GORM 连接

在 Go 代码中,你可以这样配置 GORM 连接:

package main

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

const (
    host     = "localhost"
    port     = 3306
    user     = "gorm_user"
    password = "password"
    dbname   = "example_db"
)

var (
    dsn = user + ":" + password + "@tcp(" + host + ":" + port + ")/" + dbname + "?charset=utf8mb4&parseTime=True&loc=Local"
)

func main() {
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        log.Fatal("failed to connect database:", err)
    }

    // 迁移 schema
    db.AutoMigrate(&Product{})
}

实现 CRUD 操作

1. 定义模型

定义一个简单的模型 Product 来表示数据库中的表:

type Product struct {
    gorm.Model
    Code  string
    Price uint
}

2. 创建(Create)

使用 Create 方法添加新记录:

func createProduct(db *gorm.DB) {
    product := Product{Code: "D42", Price: 100}
    result := db.Create(&product) // 使用 & 传递指针
    if result.Error != nil {
        log.Fatal(result.Error)
    }
}

3. 读取(Read)

使用 FindFirst 方法查询记录:

func findProduct(db *gorm.DB) {
    var product Product
    db.First(&product, 1) // 根据 id 查询
    if product.Code == "" {
        log.Println("Product not found")
    } else {
        log.Println(product)
    }
}

4. 更新(Update)

使用 SaveUpdates 方法更新记录:

func updateProduct(db *gorm.DB) {
    var product Product
    db.First(&product, 1)
    product.Price = 200
    result := db.Save(&product)
    if result.Error != nil {
        log.Fatal(result.Error)
    }
}

5. 删除(Delete)

使用 Delete 方法删除记录:

func deleteProduct(db *gorm.DB) {
    var product Product
    result := db.Delete(&product, 1) // 根据 id 删除
    if result.Error != nil {
        log.Fatal(result.Error)
    }
}

总结

本文介绍了如何使用 GORM 连接数据库并实现 CRUD 操作。GORM 提供了一种简洁的方式来处理数据库操作,使得开发者可以更加专注于业务逻辑。通过定义模型、配置连接和实现 CRUD 操作,你可以快速地在 Go 项目中集成数据库功能。希望这篇文章能帮助你更好地理解和使用 GORM。