MyBatis處理CLOB/BLOB類型數(shù)據(jù)以及解決讀取問(wèn)題
前言
使用Mybatis時(shí)有兩個(gè)類型需要特殊處理,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都是大字段類型。(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)的類型也不同:
- 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類型列的映射處理支持。(app)
二、編寫Mapper文件
如下所示:Mapper文件中查詢sql的id為queryByList,report_summary為Oracle數(shù)據(jù)庫(kù)中的一個(gè)字段,是CLOB類型。
myClob為java類,在java類中定義一個(gè)String類型的字段reportSummary,用于接收CLOB信息。
Mapper.xml文件加入如下配置可以讀取CLOB和BLOB類型的數(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)文章
Spring中GET請(qǐng)求參數(shù)偶發(fā)性丟失問(wèn)題分析及修復(fù)
本文描述了一種在SpringCloud微服務(wù)架構(gòu)下GET接口偶爾出現(xiàn)參數(shù)丟失的問(wèn)題,通過(guò)源碼分析和復(fù)現(xiàn),發(fā)現(xiàn)問(wèn)題是由于線程中請(qǐng)求對(duì)象的生命周期管理導(dǎo)致的,解決方法包括改用POST請(qǐng)求或更換Tomcat為Undertow中間件,需要的朋友可以參考下2025-04-04
SpringBoot整合Sharding-JDBC實(shí)現(xiàn)MySQL8讀寫分離
本文是一個(gè)基于SpringBoot整合Sharding-JDBC實(shí)現(xiàn)讀寫分離的極簡(jiǎn)教程,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下2021-07-07
Spring?加載?Application?Context五種方式小結(jié)
這篇文章主要介紹了Spring?加載?Application?Context五種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-01-01
java文件下載代碼實(shí)例(單文件下載和多文件打包下載)
這篇文章主要介紹了java文件下載代碼實(shí)例(單文件下載和多文件打包下載),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
詳細(xì)談?wù)凧ava中l(wèi)ong和double的原子性
原子性是指一個(gè)操作或多個(gè)操作要么全部執(zhí)行,且執(zhí)行的過(guò)程不會(huì)被任何因素打斷,要么就都不執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于Java中l(wèi)ong和double原子性的相關(guān)資料,需要的朋友可以參考下2021-08-08
IDEA中使用jclasslib插件可視化方式查看類字節(jié)碼的過(guò)程詳解
查看JAVA字節(jié)碼有兩種方式一種是使用 jdk命令 javap,還有一種就是 使用 插件了,今天給大家分享IDEA中使用jclasslib插件可視化方式查看類字節(jié)碼的過(guò)程詳解,感興趣的朋友跟隨小編一起看看吧2021-05-05

