Go gorm 更新操作代码示范

50 min read

gorm 是一个 Go 语言的 ORM(Object-Relational Mapping),用于简化数据库操作。以下是 gorm 中进行更新操作的代码示范:

// 导入 gorm 和数据库驱动(如 mysql、postgres 等)
import (
    "gorm.io/gorm"
    "gorm.io/driver/mysql" // 根据使用的数据库选择合适的驱动
)

// 定义一个结构体,表示数据库中的表模型
type User struct {
    gorm.Model
    Name  string
    Email string
    Age   int
}

// 初始化 gorm 的数据库连接
func InitDB() (*gorm.DB, error) {
    // 根据数据库连接信息创建数据库连接
    dsn := "user:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local" // 根据实际情况填入正确的连接信息
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        return nil, err
    }

    // 自动迁移表结构
    db.AutoMigrate(&User{})

    return db, nil
}

func main() {
    // 初始化数据库连接
    db, err := InitDB()
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 更新记录
    var user User
    db.First(&user, "id = ?", 1) // 根据指定条件查找记录
    db.Model(&user).Update("Age", 30) // 更新指定字段的值

    // 更新多个字段
    db.Model(&user).Updates(User{Name: "Tom", Email: "[email protected]"})

    // 批量更新记录
    db.Table("users").Where("age > ?", 25).Update("age", gorm.Expr("age - ?", 1))

    // 在更新操作时使用 SQL 表达式
    db.Model(User{}).Where("age = ?", 18).Update("age", gorm.Expr("age + ?", 1))

    // 使用 map 作为更新条件和更新内容
    db.Model(User{}).Where(map[string]interface{}{"name": "Alice"}).Updates(map[string]interface{}{"age": 20, "email": "[email protected]"})
}

上述代码示范了 gorm 中更新操作的几种常见用法,包括更新单个字段、更新多个字段、批量更新记录、使用 SQL 表达式和使用 map 作为更新条件和更新内容等。具体可根据实际业务需求选择合适的更新方式。