Gorm-使用结构体定义数据库模型

2023-04-24 00:08:17 浏览数 (1)

Gorm是一个基于Golang语言的ORM库,它提供了一种简单易用的方式,帮助开发人员更轻松地管理数据库。

定义模型

Gorm使用结构体来定义数据库模型,开发人员可以在结构体中定义表名、字段名、字段类型、索引、唯一约束、默认值、关联关系等信息。以下是一个示例模型定义:

代码语言:javascript复制
type User struct {
    gorm.Model
    Name     string `gorm:"type:varchar(255)"`
    Age      int
    Email    string `gorm:"type:varchar(100);unique_index"`
    Password string `gorm:"type:varchar(100)"`
}

在上述示例中,我们定义了一个名为User的结构体,包含了gorm.Model,它是一个内置模型,包含了ID、CreatedAt、UpdatedAt、DeletedAt等字段。除此之外,我们还定义了Name、Age、Email、Password等字段,其中Email字段使用了unique_index标记表示该字段为唯一约束。这些标记可以在结构体中进行灵活配置,以满足实际需要。

数据库操作

在定义完模型后,我们可以使用Gorm进行数据库操作,例如创建、查询、更新和删除记录等。以下是使用Gorm进行数据库操作的示例代码:

代码语言:javascript复制
package main

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

type User struct {
    gorm.Model
    Name     string `gorm:"type:varchar(255)"`
    Age      int
    Email    string `gorm:"type:varchar(100);unique_index"`
    Password string `gorm:"type:varchar(100)"`
}

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

    // 自动迁移数据表
    err = db.AutoMigrate(&User{})
    if err != nil {
        panic(err)
    }

    // 创建用户
    user := User{Name: "Alice", Age: 20, Email: "alice@example.com", Password: "123456"}
    db.Create(&user)

    // 查询用户
    var result User
    db.First(&result, user.ID)
    fmt.Println(result.Name)
    fmt.Println(result.Email)

    // 更新用户
    db.Model(&user).Update("Name", "Bob")

    // 删除用户
    db.Delete(&user)
}

在以上示例代码中,我们首先连接MySQL数据库,并使用AutoMigrate方法自动迁移数据表。然后,我们创建了一个名为user的User记录,并使用Create方法将其保存到数据库中。接着,我们查询了保存在数据库中的user记录,并使用Model和Update方法更新了其Name字段。最后,我们使用Delete方法删除了user记录。

go

0 人点赞