刚开始用GORM,定义了一个struct结构体来定义需要访问的数据库字段,之后用Where设置了查询条件,最后用Find获取全部内容。
总的来说呢,执行的很成功,数据也都搂出来了,因为涉及到公司机密,所以具体是哪个字段,咱这里就不赘述了。
仔细看了一下呢,发现数据细节出现了问题,数据集中所有是int的字段的值全部为0。
这着实让我挠头了。
struct的tag按网上的一大堆资料改了半天,运行结果还是一样,不由得不怀疑这个tag没有生效。
最后验证了下,不关人家tag的事儿。
咱这里就只说了哈,出现我这种情况的原因就是定义结构体struct的时候的字段名字没有写对。。。
很坑吧,但是没招儿,比如数据库中的字段名称taskid、user这两个字段。
根据这个举个例子来说明一下:
type TrainTaskRule struct {
TaskID int
User string
}
按上面这个结构体struct来find的话,taskid获取的值始终为0值,得按如下格式定义:
type TrainTaskRule struct {
Taskid int
User string
}
来总结一下这个字段名称的定义规则:
- 必须跟数据库字段名称保持一致。
- 字段名只有一个单词(不管是不是驼峰,只要不是下划线连接的都可认为时一个单词)时可首字母大写。
- 字段名有多个单词时,可将每个单词的首字母大写连在一起定义(apple_ban可定义为AppleBan)。
有什么疑问的可以私聊我哈。
扫码关注公众号,获取更多优质内容。