首頁>技術>

之前業務開發時,有一個欄位接收的資料是Json格式的,並且需要以Json形式入庫:

資料庫中是這樣儲存的,這裡實際是一個Json陣列。

[  {    "label": "result1",    "name": "較好",    "readonly": false  },  {    "label": "result2",    "name": "一般",    "readonly": false  },  {    "label": "result3",    "name": "較差",    "readonly": false  },  {    "label": "result4",    "name": "極差",    "readonly": false  }]

如果這個資料你要存取,你會怎麼做?存入時,前端直接傳Json格式的資料給你。取出時,你可能會再將Json資料轉成List,以便做其他的操作。

但是在面向物件的思想中,這個Json陣列中的每個元素就是一個物件,我們可不可以在程式碼層中以List的形式存,然後以List的形式取出,中間的Json轉換有程式自動去做,不需要開發去手動轉。

當然有實現的方法,我們來看效果:

我們在實體類中的這個欄位寫成Lis形式的,在上面新增@ColumnType註解。這個註解用來實現List與Json之間的自動互轉。然後需要在Mapper.xml檔案中配置:

<result column="survey_conclusion_options" property="surveyConclusionOptions" typeHandler="com.xxx.SurveyConclusionTemplateTypeHandler" />

我們在這個欄位新增typeHandler。

這樣我們下程式碼存資料的時候就是新增List而不是Json了。

檢視一下資料庫,已經自動轉成Json了:

我們取出時,只需要直接查詢,不需要做別的處理,返回的就是List了。

是不是存取很方便。

現在我們來看看欄位註解中SurveyConclusionTemplateTypeHandler這個轉換類。

這裡用到了JsonTypeHandler,並且指定了實體類。

我們來看看JsonTypeHandler。

主要是做Json的處理。完整程式碼可以上網自行下載。

好了這篇文章就到這裡啦,希望對大家有幫助。

20
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • CPU虛擬化:陷入和模擬