博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang-gorm框架支持mysql json类型
阅读量:4553 次
发布时间:2019-06-08

本文共 1766 字,大约阅读时间需要 5 分钟。

gorm框架目前不支持Json类型的数据结构 http://gorm.book.jasperxu.com/callbacks.html

如在Mysql中定义了如下的表结构

CREATE TABLE `report` (  `id` bigint(20) NOT NULL,  `query_param` json NOT NULL,  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',  `create_date` timestamp NULL DEFAULT NULL COMMENT '创建时间',  `update_by` varchar(50) DEFAULT NULL COMMENT '修改人',  `update_date` timestamp NULL DEFAULT NULL COMMENT '修改时间',  PRIMARY KEY (`id`),  UNIQUE KEY `id_UNIQUE` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

 

解决办法是自定义一个JSON类型

package modelsimport (    "bytes"    "errors"    "database/sql/driver")type JSON []bytefunc (j JSON) Value() (driver.Value, error) {    if j.IsNull() {        return nil, nil    }    return string(j), nil}func (j *JSON) Scan(value interface{}) error {    if value == nil {        *j = nil        return nil    }    s, ok := value.([]byte)    if !ok {        errors.New("Invalid Scan Source")    }    *j = append((*j)[0:0], s...)    return nil}func (m JSON) MarshalJSON() ([]byte, error) {    if m == nil {        return []byte("null"), nil    }    return m, nil}func (m *JSON) UnmarshalJSON(data []byte) error {    if m == nil {        return errors.New("null point exception")    }    *m = append((*m)[0:0], data...)    return nil}func (j JSON) IsNull() bool {    return len(j) == 0 || string(j) == "null"}func (j JSON) Equals(j1 JSON) bool {    return bytes.Equal([]byte(j), []byte(j1))}

 

使用如下可以完美支持

type Report struct {    ID            int64        `json:"id"`    QueryParam  JSON      `json:"queryParam"`    CreateBy     string         `json:"createBy"`    CreateDate     time.Time   `json:"createDate"`    UpdateBy     string         `json:"updateBy"`    UpdateDate     time.Time   `json:"updateDate"`}

 

转载于:https://www.cnblogs.com/qizhelongdeyang/p/10174060.html

你可能感兴趣的文章
ext3.2 右击动态添加node的treepanel
查看>>
Database links
查看>>
1035 插入与归并(25 分)
查看>>
STL中排序函数的用法(Qsort,Sort,Stable_sort,Partial_sort,List::sort)
查看>>
如何解决php 生成验证码图片不显示问题
查看>>
PHP,javascript实现大文件上传
查看>>
c#图像处理算法学习
查看>>
webApi之FromUri和FromBody区别
查看>>
【SoapUI】http接口测试
查看>>
各种工具网站
查看>>
数据库事务
查看>>
xe7 控件升级
查看>>
TFrame bug
查看>>
刚学习的如何才能自信的拍美美的婚纱照呢(要结婚啦)
查看>>
M51文件注释
查看>>
关于临界资源访问互斥量的死锁问题
查看>>
django-view层
查看>>
异步加载JS的方法。
查看>>
golang-gorm框架支持mysql json类型
查看>>
【tool】白盒测试
查看>>