err := db.Where("id = ?", id).First(&activity).Error
{"id": 30, "name": null}
数据库的name字段是null,但是&activity里的name会变成"",怎么保持还是null
type Activity struct {
Id int
name string
}
err := db.Where("id = ?", id).First(&activity).Error
{"id": 30, "name": null}
数据库的name字段是null,但是&activity里的name会变成"",怎么保持还是null
type Activity struct {
Id int
name string
}
将struts里面字段类型设定为指针类型就可以了。
type Activity struct {
Id int
name *string
}
这样就检索时,数据库为null的情况下,name为nil。
登录或者更新时候,如果设定name为nil的情况下,数据库name字段会变为null。
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
4 回答2.3k 阅读
5 回答1.4k 阅读
我用的xorm,也有相同的问题。
这个问题用orm自带的find方法没法赋值成null,golang不支持string型赋nil值,初始化的时候就一定有默认值。
变通一下的做法就是写sql句,IFNULL(name,"无"),然后用orm执行查询sql句。
更新和新增的时候也是一样,结构体不赋值用orm的insert语句插入数据库以后也是相应的默认值0和""