0
点赞
收藏
分享

微信扫一扫

go golang sqlx 获取数据库信息时, sql.NullString 类型在返回时只显示对应数据,不显示其它 Valid

go golang sqlx 获取数据库信息时, sql.NullString 类型在返回时只显示对应数据,不显示其它 Valid

阅读本文之前你需要了解的知识:

  1. 能通过​​sqlx​​ 能成功获取数据库数据
  2. 在定义对应数据库的​​struct​​​ 时,如果字段是非必填的,​​struct​​​ 中对应的类型就应该是​​sql.NullString​​​,而这样通过​​db.Get()​​​​db.Select()​​​ 返回的数据就是​​sql.NullString​​ 的结构
type NullString struct {
String string
Valid bool // string 不为空时为 true
}

我原本对应数据库的 ​​struct​​ 是这样定义的

type User struct {
Id int `db:"id"`
Name string `db:"name"`
Phone string `db:"phone"`
Password sql.NullString `db:"password"`
WxQr string `db:"wx_qr"`
Desc sql.NullString `db:"desc"`
Homepage sql.NullString `db:"homepage"`
GaodeInvitation sql.NullString `db:"gaode_invitation"`
DateEdit sql.NullString `db:"date_edit"`
DateRegister sql.NullString `db:"date_register"`
Hash string `db:"hash"`
}

获取的数据如下

go golang sqlx 获取数据库信息时, sql.NullString 类型在返回时只显示对应数据,不显示其它 Valid_sqlx

除去 sql.NullString 的结构,只显示数据

通过查找,总算解决了这个问题

参考:​​https://stackoverflow.com/questions/53841547/go-optional-fields-with-sqlx​​

只需要将原本 ​​sql.NullString​​​ 类型改为 ​​*string​​​ 并在其后添加 ​​json:",omitempty"​​ 即可

type User struct {
Id int `db:"id"`
Name string `db:"name"`
Phone string `db:"phone"`
Password *string `db:"password" json:",omitempty"`
WxQr string `db:"wx_qr"`
Desc *string `db:"desc" json:",omitempty"`
Homepage *string `db:"homepage" json:",omitempty"`
GaodeInvitation *string `db:"gaode_invitation" json:",omitempty"`
DateEdit *string `db:"date_edit" json:",omitempty"`
DateRegister *string `db:"date_register" json:",omitempty"`
Hash string `db:"hash"`
}

修改后获取的数据是这样的:

go golang sqlx 获取数据库信息时, sql.NullString 类型在返回时只显示对应数据,不显示其它 Valid_golang_02


举报

相关推荐

0 条评论