淺淡mybatis對Oracle中BLOB以及CLOB字段的處理

在對數據進行數據庫存儲的時候,通常有遇到內容較大的數據。因ORACLE字段的限制,VARCHAR2類型只支持最長4000個

英文字符的保存。此時只能通過BLOB或CLOB來存取。

BLOB全稱byte類型的大對象,即字節型大對象,CLOB全稱Character類型的大對象即字符型大對象。雖然在使用mybatic讀取這兩種類型時可以用to_char函數將字段轉換成字符串類型,但是遇到長度超過4000的數據時還是會報錯誤。此時就需要通過一些手段來對它們進行處理。

首先,不管使用哪種類型,都需要將表封裝成一個對象,對象的字段跟數據庫一一對應。

比如有這麼一張數據表PEOPLE

ID NUMBER
NAME VARCHAR2(10)
DESC BLOB

此時需要建一個People.java類,內容爲

public class People{
    private Integer id;
    private String name;
    private byte[] desc;
    //getter and setter
}

此時對於desc字段需要使用byte[]數組。

在mybatis查詢時直接將resultType="People"即可。

若是表格式爲

ID NUMBER
NAME VARCHAR2(10)
DESC CLOB

 

此時對象需要以爲

public class People{
    private Integer id;
    private String name;
    private String desc;
    //getter and setter
}

然後在取數據時需要定義一個resultmap映射對象

<resultMap type="People" id="peopleMap"> 
    <result property="desc" column="desc" javaType="String" jdbcType="VARBINARY"/> </resultMap>
 <select id="query" parameterType="Map" resultMap="peopleMap">
    select * from people
</select>

根據代碼可以看到,只需要對相應字段進行映射就好,其它字段系統會自動映射。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章