之前業務開發時,有一個欄位接收的資料是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的處理。完整程式碼可以上網自行下載。
好了這篇文章就到這裡啦,希望對大家有幫助。
最新評論