使用gorm连接数据库,并实现增删改查操作|青训营

48 阅读2分钟

以下是一个基于Go和GORM库的数据库连接示例和增删改查操作的实现过程。

步骤1:导入依赖项和设置数据库连接

首先,确保已经安装了Go和GORM库,并在项目中导入相应的依赖项。

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

然后,设置数据库连接并创建一个全局的数据库实例。

var db *gorm.DB

func initDatabase() {
    dsn := "user:password@tcp(localhost:3306)/database?charset=utf8mb4&parseTime=True&loc=Local" // 根据实际情况修改
    var err error
    db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic("无法连接到数据库")
    }
}

步骤2:定义模型结构体

创建一个结构体来表示数据库表的模型。

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

步骤3:实现增删改查操作

创建数据(增加)

func createUser(name, email string) {
    user := &User{Name: name, Email: email}
    result := db.Create(user)
    
    if result.Error != nil {
        panic("无法创建用户")
    }
}

读取数据(查询)

func getUser(id uint) *User {
    var user User
    result := db.First(&user, id)
    
    if result.Error != nil {
        panic("无法找到用户")
    }
    
    return &user
}

更新数据(修改)

func updateUser(id uint, name, email string) {
    user := getUser(id)
    user.Name = name
    user.Email = email
    
    result := db.Save(&user)
    
    if result.Error != nil {
        panic("无法更新用户")
    }
}

删除数据

func deleteUser(id uint) {
    result := db.Delete(&User{}, id)
    
    if result.Error != nil {
        panic("无法删除用户")
    }
}

步骤4:测试函数

编写一个测试函数来测试增删改查操作。

func main() {
    initDatabase()
    
    // 创建数据
    createUser("Alice", "alice@example.com")
    createUser("Bob", "bob@example.com")
    
    // 查询数据
    user := getUser(1)
    fmt.Println(user.Name, user.Email)
    
    // 更新数据
    updateUser(2, "Charlie", "charlie@example.com")
    
    // 删除数据
    deleteUser(1)
}

完整代码示例

最后,将所有的代码片段整合在一起。

package main

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

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

var db *gorm.DB

func initDatabase() {
    dsn := "user:password@tcp(localhost:3306)/database?charset=utf8mb4&parseTime=True&loc=Local" // 根据实际情况修改
    var err error
    db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic("无法连接到数据库")
    }
}

func createUser(name, email string) {
    user := &User{Name: name, Email: email}
    result := db.Create(user)
    
    if result.Error != nil {
        panic("无法创建用户")
    }
}

func getUser(id uint) *User {
    var user User
    result := db.First(&user, id)
    
    if result.Error != nil {
        panic("无法找到用户")
    }
    
    return &user
}

func updateUser(id uint, name, email string) {
    user := getUser(id)
    user.Name = name
    user.Email = email
    
    result := db.Save(&user)
    
    if result.Error != nil {
        panic("无法更新用户")
    }
}

func deleteUser(id uint) {
    result := db.Delete(&User{}, id)
    
    if result.Error != nil {
        panic("无法删除用户")
    }
}

func main() {
    initDatabase()
    
    // 创建数据
    createUser("Alice", "alice@example.com")
    createUser("Bob", "bob@example.com")
    
    // 查询数据
    user := getUser(1)
    fmt.Println(user.Name, user.Email)
    
    // 更新数据
    updateUser(2, "Charlie", "charlie@example.com")
    
    // 删除数据
    deleteUser(1)
}

这是一个基本的演示,代码可以根据实际需求进行调整和扩展。请确保安全的数据库连接信息和替换数据库名称与表字段的示例中标记的部分。 请注意,这只是一个简单的示例,以帮助入门GORM库。在实际项目中,可能需要更多的错误处理、查询过滤和其他高级功能。