解决go数据表查询结构体对应字段null问题
今天在做项目的时候遇到了这样一个问题!
其实很早之前有遇到过!但是因为没有记录回顾就忽略了!
今天做一个查询用户表的时候遇到了这样的一个错误
converting NULL to string is unsupported
意思是:无法将 Null 值 转为 string!
解决方法:将模型字段的类型定义为指针类型!
package models
// 解决go数据表查询结构体对应字段null问题(sqlx converting NULL to string is unsupported)
// UserModel 用户数据表模型
type UserModel struct {
UserId *int64 `db:"user_id" json:"user_id"`
Username *string `db:"username" json:"username"`
Avatar *string `db:"avatar" json:"avatar"`
Password *string `db:"password" json:"password"`
Email *string `db:"email" json:"email"`
Gender *int `db:"gender" json:"gender"`
}
或者使用一个sqlNull[type]
的方式也可以
原因: Go是一种强类型的编程语言,许多SQL数据库支持null。
这些null在Go中可能会导致复杂化。
比如在这个例子中,当一个空字符串使用NULL值时,会抛出将NULL转换为字符串不支持的错误。
支持NULL或其他未知数的数据库表列应将其值保存为数据库.sql的Null类型,而不是将SQL查询值保存为基本Go类型。这些类型包括NullString, NullBool, NullInt64, NullFloat64, 和NullTime。
评论区