简单记录下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:  "[email protected]",
			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")

猜你喜欢

转载自blog.csdn.net/kuangshp128/article/details/128672769
今日推荐