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记录。