日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

在golang xorm中使用postgresql的json,array類型的操作

瀏覽:263日期:2024-05-29 15:59:40

xorm支持各種關系數據庫,最近使用postgresql時,總是踩到一些坑,在此記錄下解決方式。

在使用postgresql的array類型時,查詢有點問題,xorm的官方文檔給出重寫的方式,但是不是很清晰:

官方文檔鏈接:http://xorm.io/docs

在golang xorm中使用postgresql的json,array類型的操作

也就是說碰到基礎庫不支持的類型,需要我們去重寫ToDB、FromDB方法,廢話不多說直接上代碼:

比如int8[]類型,自定一個Int64Array

type Int64Array []int64func (s *Int64Array) FromDB(bts []byte) error {if len(bts) == 0 {return nil}str := string(bts)if strings.HasPrefix(str, '{') {str = '[' + str[1:len(str)]}if strings.HasSuffix(str, '}') {str = str[0: len(str)-1] + ']'}var ia = &[]int64{}err := json.Unmarshal([]byte(str), ia)if err != nil {return err}*s = Int64Array(*ia)return nil}func (s *Int64Array) ToDB() ([]byte, error) {return serializeBigIntArray(*s, '{', '}'), nil}func (arr Int64Array) MarshalJSON() ([]byte, error) {return serializeBigIntArrayAsString(arr, '[', ']'), nil}func (arr *Int64Array) UnmarshalJSON(b []byte) error {var strarr []stringvar intarr []int64err := json.Unmarshal(b, &strarr)if err != nil {return err}for _, s := range strarr {i, err := strconv.ParseInt(s, 10, 64)if err != nil {return err}intarr = append(intarr, i)}*arr = intarrreturn nil}func serializeBigIntArray(s []int64, prefix string, suffix string) []byte {var buffer bytes.Bufferbuffer.WriteString(prefix)for idx, val := range s {if idx > 0 {buffer.WriteString(',')}buffer.WriteString(strconv.FormatInt(val, 10))}buffer.WriteString(suffix)return buffer.Bytes()}func serializeBigIntArrayAsString(s []int64, prefix string, suffix string) []byte {var buffer bytes.Bufferbuffer.WriteString(prefix)for idx, val := range s {if idx > 0 {buffer.WriteString(',')}buffer.WriteString(''')buffer.WriteString(strconv.FormatInt(val, 10))buffer.WriteString(''')}buffer.WriteString(suffix)return buffer.Bytes()}json類型:

type Cover struct { Id int64 `json:'id,omitempty'` Fid string `json:'fid,omitempty'` Type int8 `json:'type,omitempty'` Url string `json:'url,omitempty'`}func (c *Cover) FromDB(bytes []byte) error { return json.Unmarshal(bytes, c)}func (c *Cover) ToDB() (bytes []byte, err error) { bytes, err = json.Marshal(c) return}具體使用:

type Course struct {Id int64 `json:'id,string' form:'id'`Name string `json:'name' form:'name'`Brief string `json:'brief' form:'brief'`Description string `json:'description' form:'description'`Cover common.Cover `xorm:'Text' json:'cover' form:'cover'`Categories common.Int64Array `xorm:'Text' json:'categories' form:'categories[]'`Tags common.Int64Array `json:'tags' form:'tags[]'`Difficulty float64 `json:'difficulty' form:'difficulty'`Price float64 `json:'price' form:'price'`Markets common.Int64Array `json:'markets' form:'markets[]'`StudentAmount int64 `json:'studentAmount' form:'studentAmount'`SubjectAmount int64 `json:'subjectAmount' form:'subjectAmount'`Crt time.Time `json:'crt'`Lut time.Time `json:'lut'`Statusint16 `json:'status' form:'status'`common.Page `xorm:'-'`}

補充:golang gin xorm注意事項

1. 無論是golang還是xorm中,在填寫j’son字段時,注意空格,比如 `json:'abcd '` `json:'abcd'`是不一樣的,不仔細對比會出錯

2.當結合gin框中的

c.JSON(http.StatusOK,gin.H{})操作

并且使用xorm中的join,find操作時(https://www.kancloud.cn/xormplus/xorm/167102)要注意如下現象,

假如定義兩個結構體對應兩個表

在golang xorm中使用postgresql的json,array類型的操作

然后使用聯合查詢,先把兩個結構體結合成一個結構體,假如如下,在UserGroup中使用User和Group匿名結構體,

在golang xorm中使用postgresql的json,array類型的操作

那么當我們使用gin的c.JSON(http.StatusOK,gin.H{'data':UserGroup})返回數據時會導致Group和User中同名字段顯示不了,這應該是gin和xorm的不是很兼容造成的(沒有深究),

要解決這個問題,最好讓UserGroup中的User和Group不要以匿名結構體的形式存在

可以改成

type UserGroup struct { MyUser User `xorm:'extends' json:'你要json中返回的名字'` MyGroup Group `xorm:'extends' json:'你要json中返回的名字'`}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产成人1区| 亚洲有吗中文字幕| 欧美一区二区三区免费看| 亚洲小说春色综合另类电影| 欧美片第1页| 日本精品不卡| 久久久蜜桃一区二区人| 三级小说欧洲区亚洲区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 精品视频亚洲| 免费日韩成人| 国产一区二区三区91| 97精品国产一区二区三区| av中文字幕在线观看第一页 | 国产精品亚洲四区在线观看 | 欧美一区二区三区久久| 国产精品一区三区在线观看| 久久天堂影院| 欧美国产美女| 激情欧美亚洲| 亚洲一区有码| 国产精品99久久免费观看| 久久精品国产99| 欧美成人精品三级网站| 影院欧美亚洲| 免费久久99精品国产自在现线| 综合干狼人综合首页| 欧美精品国产| 国产盗摄——sm在线视频| 久久高清免费| 蜜臀91精品一区二区三区| 四虎精品一区二区免费| 精品一区不卡| 欧美精品激情| 欧美三级第一页| 日韩欧美二区| 亚洲ww精品| 高清久久精品| 日本欧美在线看| 美女在线视频一区| 欧美sss在线视频| 中文字幕一区日韩精品| 另类欧美日韩国产在线| 一级欧洲+日本+国产| 国产伦精品一区二区三区在线播放| 日韩中文字幕高清在线观看| 亚洲伊人精品酒店| 在线看片福利| 四虎在线精品| 日韩大片在线| 青草久久视频| 亚洲一级黄色| 国产精品日韩精品在线播放| 久久蜜桃资源一区二区老牛| 深夜福利亚洲| av日韩中文| 一本一道久久a久久| 国产精品久久久久久久久妇女| 国产女优一区| 国内精品麻豆美女在线播放视频| 在线亚洲自拍| 激情久久一区二区| 亚洲我射av| 四虎影视精品| 久久国产免费看| 国精品一区二区| 国产精品宾馆| 伊人精品久久| 激情偷拍久久| 福利精品在线| 亚洲欧洲美洲国产香蕉| 亚洲a在线视频| 国产一区二区三区不卡av | 欧美好骚综合网| 日韩av中文字幕一区二区| 久久国产欧美| 国产精品v一区二区三区| 国产视频一区在线观看一区免费| 精品一区二区三区亚洲| 亚洲精品观看| 一区二区三区视频免费观看| 国产精品久久久久77777丨| 久久激情中文| 精品视频在线观看网站| 日韩**一区毛片| 国产精品婷婷| 欧美色图国产精品| 国产一区二区三区91| 日韩激情网站| 欧美一区=区| 在线成人动漫av| caoporn视频在线| 欧美国产视频| 欧美一级二区| 日韩福利视频导航| 蜜臀精品一区二区三区在线观看 | 美腿丝袜亚洲一区| 日本成人在线视频网站| 久久av一区二区三区| 久久蜜桃精品| 波多野结衣久久精品| 国产激情欧美| 日韩av中文字幕一区| 在线看片日韩| 视频一区二区三区在线| 婷婷综合网站| 亚洲国产专区| 欧美/亚洲一区| 成人亚洲一区二区| 久久wwww| 国产欧美精品| 国产精品久久久久久模特| 97se亚洲| 91精品日本| 欧美天堂一区二区| 日本久久一区| 日韩欧美中文在线观看| 亚洲天堂免费| 亚洲精选久久| 婷婷亚洲成人| 欧美日韩1区2区3区| 国产日产精品_国产精品毛片| 婷婷精品在线| 日韩精品一卡二卡三卡四卡无卡| 欧美精品黄色| 在线亚洲免费| 另类激情亚洲| 综合激情在线| 日本精品一区二区三区在线观看视频| 一区二区国产精品| 日韩一区二区三区精品| 婷婷视频一区二区三区| 日韩在线网址| 青草久久视频| 麻豆视频一区| 97精品一区二区| 99久久九九| 午夜一级在线看亚洲| 国产精品婷婷| 亚洲青青久久| 国产伦精品一区二区三区在线播放| 国产精品免费精品自在线观看| 国产精品白丝av嫩草影院| 精品欧美日韩精品| 日韩和的一区二在线| 日韩亚洲在线| 婷婷精品在线观看| 国产精品s色| 蜜桃成人精品| 亚洲欧美日韩在线观看a三区| 亚洲精品裸体| 国产极品模特精品一二 | 国产日韩欧美一区在线| 免费在线亚洲欧美| 日韩免费看片| 伊人久久成人| 欧美日韩91| 国产91欧美| 午夜精品网站| 日韩中文一区二区| 精品国产欧美日韩一区二区三区| 欧美羞羞视频| 蜜臀av亚洲一区中文字幕| 国产精品红桃| 日本久久成人网| 蜜臀久久久久久久| 欧美激情视频一区二区三区免费| 精品视频在线一区二区在线| 香蕉精品久久| 日本欧美一区| 亚洲涩涩在线| 亚洲区第一页| 超级白嫩亚洲国产第一| 中文国产一区| 国产精品66| 伊人久久成人| 国产精品毛片视频| 不卡中文一二三区| 国产另类在线| 日韩欧美精品一区| 亚洲欧洲av| 日韩欧美一区免费| 免费在线观看精品| 久久婷婷国产| 免费不卡在线视频| 91亚洲国产| 日韩精品乱码av一区二区| 久久影院午夜精品| 午夜久久av| 99久久婷婷| 国产精品欧美三级在线观看 | 91嫩草精品| 极品av在线| 午夜久久av | 久久99偷拍| 亚洲女人av| 国产一区二区精品福利地址| 国产精品毛片| 国产成人在线中文字幕| 亚洲日本三级|