三种处理复杂json存入数据库的方式gorm

前端传给后端的数据,mysql需要存储包含多个列表的大json,奈何老大给的框架写的太死,想了n多办法才实现,还不是最优结果,以下几种思路

  1. model部分设置三个表A总表(前端传过来,包含BC)、B表需要存储在数据库里的(无列表)、C表所有列表数据(用于转换),完全分开处理,易懂,注意一开始要想好架构,要不基本的传列表都费劲
//model部分
type ServiceInfo struct {
    //B表
	//global.GV_MODEL
	ID               uint   `gorm:"primarykey"` // 主键ID
	ServiceName      string `gorm:"unique;not null;size:20"`
	Multi            string  //全部人员,用于存储列表string
}

type ServiceAll struct {
    //A表 
	ServiceInfo
	ServiceMulti    *Multi `gorm:"foreignKey:ServiceInfoName"`//注意设置外键

}

type Multi struct {
    //C表,注意设置主键
	ServiceInfoName  string   `gorm:"primarykey"`
	PmMulti        []string `gorm:"type:text"`
	RdMulti        []string `gorm:"type:text"`
}

//实现部分service.go,创建表+查询表
func CreateService(s model.ServiceAll) (err error) {
   
	serviceMulti, err := json.Marshal(s.ServiceMulti)//列表集合序列化struct->[]byte
	s.Multi = string(serviceMulti)//[]byte->string存储
	serviceInfo := s.ServiceI
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值