美文网首页
嵌套结构体在数据库读取数据的时候出现错误

嵌套结构体在数据库读取数据的时候出现错误

作者: 我的饭卡呢 | 来源:发表于2018-08-21 17:46 被阅读6次
type ArticleInfo struct {
    ID int64 `db:"id"`
    CategoryID int `db:"category_id"`
    Summary string `db:"summary"`
    Title string `db:"title"`
    ViewCount int64 `db:"view_count"`
    CommentCount int64 `db:"comment_count"`
    CreateTime time.Time `db:"create_time"`
    UpdateTime time.Time `db:"update_time"`
    UserName string `db:"username"`
}

type ArticleDetail struct {
    Content string `db:"content"`
    ArticleRecord
}


type ArticleRecord struct {
    ArticleInfo
    Category
}

type Category struct {
    CategoryID int `db:"id"`
    CategoryName string `db:"category_name"`
    CategoryNo  int  `db:"category_no"`
}
var articleDetail = new(ArticleDetail)

sqlstr := `
                select id,category_id,content,title,view_count,comment_count,username,summary,create_time
                from article
                where id=? and status=1`
err  = DB.Get(ariticleDetail,sqlstr,4)

由于Category和ArticleInfo模型的ID映射到数据库都是id,所以在读取数据库时,id无法匹配到结构体对象字段,导致结构体其他字段有值,而Articleinfo中的ID和Category中的category_id都是0

解决方案

在写数据读取的sql语句时,在有歧义的字段里用上别名,并且将该结构体的字段tag改为db:"别名"

相关文章

  • 嵌套结构体在数据库读取数据的时候出现错误

    由于Category和ArticleInfo模型的ID映射到数据库都是id,所以在读取数据库时,id无法匹配到结构...

  • 字符串相关函数总结2

    fgets(字符指针,字符大小,文件结构体指针) 从文件结构体指针stream中读取数据,每次读取一行。读取的数据...

  • 数据库的存储结构

    数据库的存储结构 数据库的存储结构是怎样的? 记录是按照行存储的,但是数据库的读取不是以行为单位,否则一次读取只能...

  • 结构体嵌套

    结构体嵌套 结构体嵌套时应逐级引用

  • 结构体嵌套

    普通结构体嵌套 普通结构体嵌套,嵌套结构体可以通过 .子变量.方法 的方式获取被嵌套的属性和方法 匿名嵌套 匿名嵌...

  • 【Golang】json自定义序列化的深入解析

    对于使用结构体中嵌套结构体的情况,只有receiver为指针类型,而嵌套结构体为结构体的值语义的时候不能触发自定义...

  • Redis源码分析之数据结构

    本篇我们来看一下Redis的数据存储结构。 数据库 Redis的数据库对应的结构体是redisDb,对应的结构体定...

  • Go语言之结构体嵌套

    Go语言之结构体嵌套 在type Student2 struct结构体中,注意book参数引用的是地址,方便修改数据

  • Go语言结构体存在的坑

    如果使用结构体嵌套在实例化的时候必须先实例化外层的结构体,然后在实例化内层的结构体

  • 高并发场景下缓存处理的一些思路

    在实际的开发当中,我们经常需要进行磁盘数据的读取和搜索,因此经常会有出现从数据库读取数据的场景出现。但是当数据访问...

网友评论

      本文标题:嵌套结构体在数据库读取数据的时候出现错误

      本文链接:https://www.haomeiwen.com/subject/skijiftx.html