之前業務開發時,有一個欄位接收的數據是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的處理。完整代碼可以上網自行下載。
好了這篇文章就到這裡啦,希望對大家有幫助。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/209409.html
微信掃一掃
支付寶掃一掃