gorm
模型定义 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
模型定义
GORM 通过将 Go 结构体(Go structs) 映射到数据库表来简化数据库交互。 了解如何在GORM中定义模型,是充分利用GORM全部功能的基础。
模型是使用普通结构体定义的。 这些结构体可以包含具有基本Go类型、指针或这些类型的别名,甚至是自定义类型(只需要实现 database/sql 包中的Scanner和Valuer接口)。
考虑以下 user 模型的示例:
type User struct {
ID uint // Standard field for the primary key
Name string // 一个常规字符串字段
Email *string // 一个指向字符串的指针, allowing for null values
Age uint8 // 一个未签名的8位整数
Birthday *time.Time // A pointer to time.Time, can be null
MemberNumber sql.NullString // Uses sql.NullString to handle nullable strings
ActivatedAt sql.NullTime // Uses sql.NullTime for nullable time fields
CreatedAt time.Time // 创建时间(由GORM自动管理)
UpdatedAt time.Time // 最后一次更新时间(由GORM自动管理)
}
约定
-
主键:GORM 使用一个名为
ID的字段作为每个模型的默认主键。 -
表名:默认情况下,GORM 将结构体名称转换为
snake_case并为表名加上复数形式。 例如,一个User结构体在数据库中的表名变为users。 -
列名:GORM 自动将结构体字段名称转换为
snake_case作为数据库中的列名。 -
时间戳字段:GORM使用字段
CreatedAt和UpdatedAt来自动跟踪记录的创建和更新时间
gorm.Model
// gorm.Model 的定义
type Model struct {
ID uint `gorm:"primaryKey"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
}
GORM提供了一个预定义的结构体,名为gorm.Model,其中包含常用字段:
-
将其嵌入在您的结构体中: 您可以直接在您的结构体中嵌入
gorm.Model,以便自动包含这些字段。 这对于在不同模型之间保持一致性并利用GORM内置的约定非常有用,请参考嵌入结构。 -
包含的字段:
ID:每个记录的唯一标识符(主键)。CreatedAt:在创建记录时自动设置为当前时间。UpdatedAt:每当记录更新时,自动更新为当前时间。DeletedAt:用于软删除(将记录标记为已删除,而实际上并未从数据库中删除)

浙公网安备 33010602011771号