gorm数据类型转换
时间: 2025-02-15 20:09:49 浏览: 29
GORM 数据类型转换方法与规则
自动类型推断
GORM 可以根据 Go 结构体中的字段类型自动推测相应的 SQL 类型。例如,int
类型会被映射成 INTEGER
或者 BIGINT
,而 string
则对应于 VARCHAR
或 TEXT
字段[^1]。
显式指定列类型
如果希望覆盖默认行为,则可以通过标签来显式设置每列的具体数据库类型:
type Product struct {
ID uint `gorm:"column:id;primary_key"`
Name string `gorm:"size:255"` // 设置 varchar(255)
Description sql.NullString `gorm:"type:text"`// 手动设定 text 类型
}
上述代码片段展示了如何通过结构体标签控制生成的表模式[^3]。
时间戳处理
对于时间类型的字段,默认情况下 GORM 会创建带有当前时间和更新时间戳的特殊列 (CreatedAt
, UpdatedAt
)。当嵌入 gorm.Model
时,这些字段会被自动管理。
JSON 和其他复合类型的支持
除了基础数据类型外,GORM 对某些复杂的 Go 类型也有良好的支持,比如数组、JSON 等。对于 PostgreSQL 数据库来说,还可以利用其特有的功能如 HSTORE 或 ARRAY[]:
type UserPreferences struct {
Preferences map[string]string `gorm:"type:hstore"`
}
type TaggedItem struct {
Tags []string `gorm:"type:varchar_array"`
}
以上例子说明了怎样针对特定数据库特性定义更高级别的数据模型[^4]。
相关推荐


















