字段忽略与只读配置
GORM 通过特殊标签控制字段在数据库操作中的读写行为,实现字段忽略或只读。
什么是字段忽略与只读
- 忽略字段:字段不参与数据库操作,GORM 完全忽略该字段
- 只读字段:字段仅在查询时读取,插入和更新时不写入数据库
忽略字段(-)
使用 - 标签完全忽略字段:
Go
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"size:100"`
Password string `gorm:"-"` // 忽略此字段
}
被忽略的字段不会创建对应的数据库列,也不参与任何 CRUD 操作。
只读字段(->)
使用 -> 标签设置为只读:
Go
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"size:100"`
CreatedAt time.Time `gorm:"->"` // 只读,查询时读取
}
只读字段会创建数据库列,但插入和更新时不会写入该字段的值。
只写字段(<-)
使用 <- 标签设置为只写:
Go
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"size:100"`
Password string `gorm:"<-"` // 只写,不读取
}
读写分离配置
Go
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"size:100"`
CreatedAt time.Time `gorm:"->;autoCreateTime"` // 只读,自动填充创建时间
UpdatedAt time.Time `gorm:"<-;autoUpdateTime"` // 只写,自动填充更新时间
}
应用场景
| 场景 | 标签 | 说明 |
|---|---|---|
| 密码字段 | gorm:"-" | 不存储到数据库 |
| 创建时间 | gorm:"->" | 仅查询时读取 |
| 更新时间 | gorm:"<-" | 仅更新时写入 |
| 计算字段 | gorm:"-" | 运行时计算,不存储 |
注意事项
-标签字段完全不参与数据库操作,不会创建列->标签字段会创建列,但插入/更新时不写入<-标签字段会创建列,但查询时不读取- 可配合 autoCreateTime、autoUpdateTime 使用
要点总结
| 标签 | 行为 | 是否创建列 |
|---|---|---|
- | 完全忽略 | 否 |
-> | 只读 | 是 |
<- | 只写 | 是 |
| 无标签 | 读写 | 是 |
存放路径:D:\git2\jwdev\articles\GORM\入门\模型标签与字段配置\字段忽略与只读配置.md
📝 发现内容有误?点击此处直接编辑