MyBatis處理CLOB/BLOB類(lèi)型數(shù)據(jù)以及解決讀取問(wèn)題
前言
使用Mybatis時(shí)有兩個(gè)類(lèi)型需要特殊處理,Blob(Binary Large Object)是指二進(jìn)制大對(duì)象字段,Clob(Character Large Object)是指大字符對(duì)象。其中Blob是為存儲(chǔ)大的二進(jìn)制數(shù)據(jù)而設(shè)計(jì)的,而Clob是為存儲(chǔ)大的文本數(shù)據(jù)而設(shè)計(jì)的。
JDBC的PreparedStatement和ResultSet都提供了相應(yīng)的方法來(lái)支持Blob和Clob操作,Mybatis各版本也支持對(duì)Blob或者Clob的存儲(chǔ)以及讀取操作,本文詳細(xì)介紹Mybatis中Clob字段的操作。
一、CLOB和BLOB介紹
BLOB和CLOB都是大字段類(lèi)型。(java)
BLOB是按二進(jìn)制來(lái)存儲(chǔ)的,而CLOB是能夠直接存儲(chǔ)文字的。(sql)
一般像圖片、文件、音樂(lè)等信息就用BLOB字段來(lái)存儲(chǔ),先將文件轉(zhuǎn)為二進(jìn)制再存儲(chǔ)進(jìn)去。文章或者是較長(zhǎng)的文字,就用CLOB存儲(chǔ)數(shù)據(jù)庫(kù)
BLOB和CLOB在不一樣的數(shù)據(jù)庫(kù)中對(duì)應(yīng)的類(lèi)型也不同:
- MySQL 中:clob對(duì)應(yīng)text/longtext,blob對(duì)應(yīng)blob
- Oracle中:clob對(duì)應(yīng)clob,blob對(duì)應(yīng)blob
MyBatis提供了內(nèi)建的對(duì)CLOB/BLOB類(lèi)型列的映射處理支持。(app)
二、編寫(xiě)Mapper文件
如下所示:Mapper文件中查詢(xún)sql的id為queryByList,report_summary為Oracle數(shù)據(jù)庫(kù)中的一個(gè)字段,是CLOB類(lèi)型。
myClob為java類(lèi),在java類(lèi)中定義一個(gè)String類(lèi)型的字段reportSummary,用于接收CLOB信息。
Mapper.xml文件加入如下配置可以讀取CLOB和BLOB類(lèi)型的數(shù)據(jù)
jdbcType="CLOB" typeHandler="org.apache.ibatis.type.ClobTypeHandler" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BLOBTypeHandler"
<select id="queryByList" parameterType="Map" resultMap="queryBaseResultMap"> select id ,title,type,report_summary,author from my_clob where 1 = 1 order by ${orderByClause} </select> <resultMap id="queryBaseResultMap" type="com.mxm.model.MyClob" > <id column="Id" property="id" jdbcType="INTEGER" /> <result column="type" property="type" jdbcType="INTEGER" /> <result column="title" property="title" jdbcType="VARCHAR" /> <result column="author" property="author" jdbcType="VARCHAR" /> <result column="report_summary" property="reportSummary" jdbcType="CLOB" typeHandler="org.apache.ibatis.type.ClobTypeHandler"> </resultMap>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決SpringBoot連接SqlServer出現(xiàn)的問(wèn)題
在嘗試通過(guò)SSL與SQL?Server建立安全連接時(shí),如果遇到“PKIX?path?building?failed”錯(cuò)誤,可能是因?yàn)槲茨苷_配置或信任服務(wù)器證書(shū),當(dāng)"Encrypt"屬性設(shè)置為"true"且"trustServerCertificate"屬性設(shè)置為"false"時(shí),要求驅(qū)動(dòng)程序使用安全套接字層(SSL)加密與SQL?Server建立連接2024-10-10在Spring Boot2中使用CompletableFuture的方法教程
這篇文章主要給大家介紹了關(guān)于在Spring Boot2中使用CompletableFuture的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2019-01-01SpringBoot XSS攻擊的常見(jiàn)形式與防范方法
XSS攻擊是指攻擊者在Web頁(yè)面的輸入數(shù)據(jù)中插入惡意腳本,當(dāng)其他用戶(hù)瀏覽該頁(yè)面時(shí),這些腳本就會(huì)在用戶(hù)的瀏覽器上執(zhí)行,可能導(dǎo)致信息泄露、會(huì)話劫持、惡意操作等安全風(fēng)險(xiǎn),本文給大家介紹了SpringBoot XSS攻擊的常見(jiàn)形式與防范方法,需要的朋友可以參考下2024-11-11常用的ResponseEntity.BodyBuilder和自定義ResponseEntity的實(shí)例
這篇文章主要介紹了常用的ResponseEntity.BodyBuilder和自定義ResponseEntity的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07Java?將HTML轉(zhuǎn)為XML的詳細(xì)步驟
這篇文章主要介紹了Java?將HTML轉(zhuǎn)為XML,本文將以html轉(zhuǎn)為xml格式為例,介紹如何實(shí)現(xiàn)轉(zhuǎn)換,以下是詳細(xì)方法及步驟,需要的朋友可以參考下2022-06-06Java簡(jiǎn)單實(shí)現(xiàn)動(dòng)態(tài)代理模式過(guò)程解析
這篇文章主要介紹了Java動(dòng)態(tài)代理模式簡(jiǎn)單案例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07