gorm 默认使用驼峰命名转蛇形命名的规则映射字段,但当数据库字段名为 `spe_name` 等非标准蛇形格式时,需通过 `gorm:"column:xxx"` 标签显式指定列名,才能正确读取数据。
在使用 GORM(如 v1.x)进行数据库操作时,结构体字段与数据库列名的映射并非总是自动准确——尤其当 MySQL 表中存在带下划线且大小写混合的字段名(如 spe_Name)时,GORM 默认的命名转换规则(SpeName → spe_name)无法匹配该列,导致查询结果为空或字段值未被赋值(如 specialty.SpeName 打印为空字符串)。
解决方法是在对应结构体字段上添加 GORM 的 column 标签,显式声明其映射的数据库列名:
type Specialties struct {
SpeId int64 `gorm:"column:spe_Id"`
SpeName string `gorm:"column:spe_Name"` // ✅ 显式映射到数据库列 spe_Name
Conditions sql.NullString `gorm:"column:conditions"`
ParentI
d sql.NullInt64 `gorm:"column:parent_id"`
Hidden sql.NullInt64 `gorm:"column:hidden"`
}⚠️ 注意事项:
最后,确保你的查询逻辑能正确加载数据——例如 Specialties 切片应来自 db.Find(&Specialties) 等有效查询,而非未初始化的空切片。否则即使标签正确,specialty.SpeName 仍可能为空。