首页 > 其他分享 >存储结构体

存储结构体

时间:2024-01-24 11:45:14浏览次数:21  
标签:Info 存储 string value json User type 结构

存储结构体

自定义的数据类型必须实现 Scanner 和 Valuer 接口,以便让 GORM 知道如何将该类型接收、保存到数据库

type Info struct {
  Status string `json:"status"`
  Addr   string `json:"addr"`
  Age    int    `json:"age"`
}

// Scan 从数据库中读取出来
func (i *Info) Scan(value interface{}) error {
  bytes, ok := value.([]byte)
  if !ok {
    return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
  }

  info := Info{}
  err := json.Unmarshal(bytes, &info)
  *i = info
  return err
}

// Value 存入数据库
func (i Info) Value() (driver.Value, error) {
  return json.Marshal(i)
}

type User struct {
  ID   uint
  Name string
  Info Info `gorm:"type:string"`
}

添加和查询

DB.Create(&User{
  Name: "枫枫",
  Info: Info{
    Status: "牛逼",
    Addr:   "成都市",
    Age:    21,
  },
})

var user User
DB.Take(&user)
fmt.Println(user)

标签:Info,存储,string,value,json,User,type,结构
From: https://www.cnblogs.com/chunyouqudongwuyuan/p/17984327

相关文章

  • CDP技术系列(一):使用bitmap存储数十亿用户ID的标签或群体
    一、背景介绍CDP系统中目前存在大量由用户ID集合组成的标签和群体,截止当前已有几千+标签,群体2W+。大量的标签都是亿级别数据量以上,例如性别、职业、学历等均,甚至有群体中的ID数量达到了数十亿+。并且随着用户ID池的不断增加,标签和群体本身包含的ID数量也随之增加,如何存储如此多......
  • 文件系统(一):存储介质、原理与架构
    liwen01 2024.01.01前言从系统角度来看,文件系统是对文件存储器空间进行组织、分配、负责文件存储并对存入的文件进行保护和检索的一个系统。它的目的是使用户和应用程序能够方便地管理存储器上的文件和目录,比如常见的对文件的增、删、改、查。每当我们操作一个文件的时候,实......
  • 数据结构--堆
    前言​ 在实际很多的应用场景中,我们对数据进行处理的时候,比如插入数据和删除数据时,我们常常需要快速的知道数据中最大值和最小值。而处理这种问题的方法之一,就是使用一个已经排序好的数据集合。通过这种方式,数据的最大值或最小值总是在数据集合的头部或者尾部(这取决于使用时升序......
  • C++ 项目结构
    1.C++项目结构C++项目包含几千个文件,当构建项目时,需要选择编译哪些文件,选择哪种工具编译这些文件组织称可执行文件1.1编译计算机处理器只能执行底层二进制指令,编译器需要将C++源码转换成处理器能执行的指令集。编译器配置的内存称为栈帧(Stackframe),配置内存传递数......
  • 数据结构
    哈希表也称为散列表,用于实现键值对的存储和查找。hash值的计算通常通过与运算hash&(m-1)方式实现,其桶的数量必须为2的次幂数(也可以通过取模hash%m计算hash值)。哈希函数将键映射到索引的位置,时间复杂度为O(1)(最坏O(n)),常见的有开放地址法和链表法两种:开放地址法:当发生哈希冲突时,......
  • 结构体对齐:
    结构体对齐:公式1:前面的地址必须是后面的地址正数倍,不是就补齐公式2:整个Struct的地址必须是最大字节的整数倍练习:StructE1{inta;charb;charc}e1;第一地址肯定存放a是4Byte地址,第二地址,b要1Byte的地址,来欢迎公式一登场:4==1*N(N等于正整数)答"是"!地址现在为......
  • JeecgBoot集成TiDB,打造高效可靠的数据存储解决方案
    TiDB简介TiDB是PingCAP公司自主设计、研发的开源分布式关系型数据库,同时支持在线事务处理与在线分析处理(HybridTransactionalandAnalyticalProcessing,HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时HTAP、云原生的分布式数据库、兼容MySQL5......
  • Html5本地存储
    Html5本地存储HTML5为我们提供了两种API,分别是localStorage与sessionStorage。二者作为HTML5新增的特性,它们的使用方法类似,都可以用来存储客户端临时信息,并且二者存储的数据格式均为key/value对的数据。区别在与生命周期,localStorage除非手动清除,否则会永久保存在客户......
  • FSA3200存储维护
    1、模式简介Ø 硬件版本:FAS3220BIOSversion:5.2.0Ø 软件版本:NetAppRelease8.1.27-Mode:TueOct3019:56:51PDT2012Ø 已知有4种模式:普通模式:fas3220-2a>                   正常启动后的模式高级模式:fas3220-2a*>             ......
  • TSINGSEE车辆检测算法及车辆结构化数据在车辆智能管控中的应用
    AI边缘计算智能分析网关V4车辆检测、车牌识别算法融合了ORC识别、云计算、计算机视觉、大数据检索等多种技术,可将运动中的机动车牌照从复杂的背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识别等流程,识别出车辆牌号、颜色等信息。AI智能分析网关V4内置近40......