Go 语言的 GORM 是一个功能强大的对象关系映射(ORM)库,它允许开发者使用 Go 语言来操作数据库。在 GORM 中, tag 是一个特殊的注释标记,用于指定字段与数据库表的映射关系以及一些额外的配置。
以下是一些常见的 GORM tag 用法示例:
基本映射:
// 假设有一个User结构体,其中Name字段对应数据库中的name列
type User struct {
Name string `gorm:"column:name"`
}
主键:
// 设置ID为表的主键
type User struct {
ID uint `gorm:"primary_key"`
Name string
}
自动递增:
// 设置ID字段自动递增
type User struct {
ID uint `gorm:"primary_key;auto_increment"`
}
忽略字段:
// 不将字段映射到数据库表中
type User struct {
Name string
Age int `gorm:"-"`
}
设置默认值:
// 为字段设置默认值
type User struct {
CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP"`
}
唯一索引:
// 为字段创建唯一索引
type User struct {
Email string `gorm:"unique_index"`
}
多字段索引:
// 为多个字段创建索引
type User struct {
FirstName string `gorm:"index:idx_name"`
LastName string `gorm:"index:idx_name"`
}
修改列类型:
// 指定列的类型
type User struct {
Name string `gorm:"type:varchar(100)"`
}
关联关系:
// 定义一对多关系
type Author struct {
ID uint
Posts []Post `gorm:"foreignkey:AuthorID"`
}
// 定义多对多关系
type User struct {
ID uint
Roles []Role `gorm:"many2many:user_roles"`
}
这些只是 GORM tag 的一些基本用法。GORM 还支持更复杂的配置,如自定义表名、时间戳设置、软删除等。你可以通过 GORM 的官方文档来获取更多信息和高级用法。