以下是使用 GORM 连接数据库并执行事务的示例代码:

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

// 定义 User 模型
type User struct {
    ID   uint
    Name string
}

func main() {
    // 数据库连接字符串
    dsn := 'user:password@tcp(127.0.0.1:3306)/database?charset=utf8mb4&parseTime=True&loc=Local'
    // 连接数据库
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic(err)
    }

    // 开始事务
    tx := db.Begin()

    // 插入数据
    user1 := User{Name: 'Alice'}
    if err := tx.Create(&user1).Error; err != nil {
        // 回滚事务
        tx.Rollback()
        panic(err)
    }

    // 更新数据
    user2 := User{}
    if err := tx.Where('name = ?', 'Alice').First(&user2).Error; err != nil {
        // 回滚事务
        tx.Rollback()
        panic(err)
    }
    user2.Name = 'Bob'
    if err := tx.Save(&user2).Error; err != nil {
        // 回滚事务
        tx.Rollback()
        panic(err)
    }

    // 提交事务
    if err := tx.Commit().Error; err != nil {
        // 回滚事务
        tx.Rollback()
        panic(err)
    }

    fmt.Println('Data inserted and updated successfully')
}

在上面的代码中,我们首先使用 GORM 中的 gorm.Open() 函数连接 MySQL 数据库,并创建了一个 User 模型。接下来,我们使用 db.Begin() 开始一个事务,然后在事务中插入一条数据,再更新该数据,最后提交事务。如果在任何操作中出现错误,则会回滚事务并抛出 panic。否则,我们会打印出成功的消息。

请注意,我们在每个操作中都使用了 tx 对象而不是 db 对象,这是因为我们希望所有操作都在同一个事务中执行。最后,需要注意的是,在使用完 tx 对象后,必须调用 tx.Rollback()tx.Commit() 方法,否则将在程序退出时自动回滚事务。

Go GORM 数据库连接与事务操作示例代码

原文地址: https://www.cveoy.top/t/topic/lJkT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录