GORM是基于Go語言的ORM庫,支持MySQL、PostgreSQL等主流關(guān)系型數(shù)據(jù)庫。同時(shí)在1.10.0版本中引入了對(duì)JSON類型的支持,使得GORM可以將JSON數(shù)據(jù)輕松存儲(chǔ)在數(shù)據(jù)庫中。
在GORM中,結(jié)構(gòu)體的字段默認(rèn)映射到數(shù)據(jù)庫表中的列。對(duì)于JSON類型的字段,我們需要使用`[]byte`類型,同時(shí)在結(jié)構(gòu)體中聲明為`json.RawMessage`類型:
type User struct { ID int Name string Age int Extra json.RawMessage // 聲明為json.RawMessage類型 }
在使用GORM進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),將`Extra`字段的值設(shè)置為JSON字符串:
user := User{ Name: "Alice", Age: 25, Extra: json.RawMessage(`{"address": "Beijing", "phone": "123456789"}`), } db.Create(&user)
上述代碼將`user`對(duì)象保存到數(shù)據(jù)庫中。在查詢數(shù)據(jù)時(shí),我們可以直接使用`Extra`字段來獲取JSON數(shù)據(jù):
var result User db.First(&result) address := result.Extra // 獲取JSON數(shù)據(jù)
除此之外,GORM還提供了豐富的查詢方式,可以方便地對(duì)JSON數(shù)據(jù)進(jìn)行過濾、排序、分組等操作。
上一篇python 選多列
下一篇mysql分組與排序一起