简单记录下gorm中存储json

  • 1、定义实体类
package model

import (
	"database/sql/driver"
	"encoding/json"
	"gorm.io/gorm"
)

type Profile struct {
	Email  string `json:"email"`
	Mobile string `json:"mobile"`
}
type UserEntity struct {
	gorm.Model
	Name    string  `json:"name"`
	Profile Profile `json:"profile" gorm:"type:json;comment:'个人信息'"`
}

// Value 存储数据的时候转换为字符串
func (t Profile) Value() (driver.Value, error) {
	return json.Marshal(t)
}

// Scan 读取数据的时候转换为json
func (t *Profile) Scan(value interface{}) error {
	return json.Unmarshal(value.([]byte), &t)
}

func (t *UserEntity) TableName() string {
	return "user"
}

  • 2、插入数据
utils.Db.AutoMigrate(&model.UserEntity{})
	u := model.UserEntity{
		Name: "张三3",
		Profile: model.Profile{
			Email:  "233@qq.com",
			Mobile: "120",
		},
	}
	utils.Db.Create(&u)
  • 3、查询出json数据
router := gin.Default()
	router.GET("/", func(ctx *gin.Context) {
		var user model.UserEntity
		utils.Db.Debug().Where("profile->'$.mobile'=(?)", "120").First(&user)
		ctx.JSON(http.StatusOK, gin.H{
			"code":    0,
			"message": "成功",
			"data":    user,
		})
	})
	router.Run(":9999")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水痕01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值