存取Oracle的大字符對象clob和blob


大字符對象CLOB一般用於存儲字符數超過4000的字段,如富文本,這些包含了格式的內容很容易超過4000字符.

1.存儲富文本時,一般含有很多尖括號這種特殊字符,如果不轉換一下,很可能無法傳遞到后台,因為這些特殊字符讓框架無法識別,解決辦法是用URLEncoder編碼一下,就能把這些特殊字符轉義成能夠正常傳遞的參數.

2.傳遞到后台后,直接保存有可能遇到數據庫的特殊字符,而無法保存,因此要轉換成另一種數據庫能識別的字符,首先用URLEncoder解碼還原,然后用HtmlUtils轉碼成數據庫能識別的10進制字符或16進制字符,然后直接保存到數據庫,只需要這樣就行: =#{value,jdbcType=CLOB}

3.如何讀取呢?直接和String類型一樣讀取即可,數據庫中的16進制編碼字符直接映射到String類型的java屬性上.

4.讀出來后,要用HtmlUtils解碼還原,然后返回給前端即可.

5.如果遇到什么問題,記得轉碼,解碼,一般都能解決.

 

大字節對象BLOB一般用於保存無法用字符表示,只能用字節表示的數據,如圖片,視頻,音頻等.這些數據說白了就是二進制數據,而二進制數據在java中就是byte[]數組,在Oracle數據庫中就是BLOB,只是叫法不一樣.存取時,java中的byte[]類型對應於數據庫的BLOB類型,這樣BLOB類型就和普通類型有一樣的操作方式了.

前端傳圖片,用MultipartFile類型接收后,可以從中通過getByte()方法獲取到它的字節數組,然后直接把這個字節數組保存到BLOB類型的數據庫字段上就行了.

讀取時,也是直接把數據庫的blob類型內容映射到byte[]類型的字段上就行了.java獲取了byte[]類型后,可以寫入到輸出流中,進而生成圖片,或者直接傳給前台轉換成圖片.

總之一句話:CLOB和BLOB操作和普通類型沒什么差別,只是前者要記得轉碼,后者要記得用byte[]類型.

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM