使用GORM连接数据库和实现CRUD操作的笔记| 青训营

126 阅读2分钟

GORM是Go语言中一款强大的ORM(对象-关系映射)库,它简化了与数据库的交互过程,使开发者能够更轻松地进行数据库操作。本文将介绍如何使用GORM连接数据库,并实现常见的增、删、改、查操作。

连接数据库

首先,我们需要引入GORM库并配置数据库连接。在go.mod文件中添加依赖:

require github.com/jinzhu/gorm v1.9.16

然后,在Go代码中配置数据库连接:

package main

import (
    "fmt"
    "github.com/jinzhu/gorm"
    "github.com/jinzhu/gorm/dialects/sqlite" // 导入数据库驱动
)

func main() {
    // 连接数据库
    db, err := gorm.Open("sqlite3", "test.db")
    if err != nil {
        panic("无法连接数据库")
    }
    defer db.Close() // 延迟关闭数据库连接

    fmt.Println("数据库连接成功")
}

定义模型

在GORM中,模型代表了数据库中的表结构。我们将创建一个User模型用于演示CRUD操作:

type User struct {
    ID   uint   `gorm:"primary_key"`
    Name string
    Age  int
}

创建记录

使用GORM可以轻松地创建数据库记录。以下是如何创建一个新的用户记录的示例代码:

func createUser(db *gorm.DB, user *User) {
    if err := db.Create(user).Error; err != nil {
        fmt.Println("创建用户失败:", err)
    } else {
        fmt.Println("创建用户成功")
    }
}

func main() {
    // ... 连接数据库代码 ...

    newUser := &User{Name: "Alice", Age: 25}
    createUser(db, newUser)
}

查询记录

GORM提供了多种查询方式。以下是如何查询所有用户的示例代码:

func getUsers(db *gorm.DB) {
    var users []User
    if err := db.Find(&users).Error; err != nil {
        fmt.Println("查询失败:", err)
    } else {
        fmt.Println("查询结果:")
        for _, user := range users {
            fmt.Printf("ID: %d, Name: %s, Age: %d\n", user.ID, user.Name, user.Age)
        }
    }
}

func main() {
    // ... 连接数据库代码 ...

    getUsers(db)
}

更新记录

更新记录也非常简单。以下是如何更新用户年龄的示例代码:

func updateUserAge(db *gorm.DB, userID uint, newAge int) {
    var user User
    if err := db.First(&user, userID).Error; err != nil {
        fmt.Println("找不到用户:", err)
        return
    }
    user.Age = newAge
    if err := db.Save(&user).Error; err != nil {
        fmt.Println("更新失败:", err)
    } else {
        fmt.Println("更新成功")
    }
}

func main() {
    // ... 连接数据库代码 ...

    updateUserAge(db, 1, 30) // 更新ID为1的用户年龄为30
}

删除记录

最后,我们将演示如何删除数据库记录:

func deleteUser(db *gorm.DB, userID uint) {
    if err := db.Delete(User{}, userID).Error; err != nil {
        fmt.Println("删除失败:", err)
    } else {
        fmt.Println("删除成功")
    }
}

func main() {
    // ... 连接数据库代码 ...

    deleteUser(db, 1) // 删除ID为1的用户
}

结论

通过这篇笔记,我们了解了如何使用GORM连接数据库,并实现了增、删、改、查等常见操作。GORM的强大功能和简洁的API使数据库操作变得更加轻松和高效。