MyBatis處理CLOB/BLOB類型數據以及解決讀取問題
前言
使用Mybatis時有兩個類型需要特殊處理,Blob(Binary Large Object)是指二進制大對象字段,Clob(Character Large Object)是指大字符對象。其中Blob是為存儲大的二進制數據而設計的,而Clob是為存儲大的文本數據而設計的。
JDBC的PreparedStatement和ResultSet都提供了相應的方法來支持Blob和Clob操作,Mybatis各版本也支持對Blob或者Clob的存儲以及讀取操作,本文詳細介紹Mybatis中Clob字段的操作。
一、CLOB和BLOB介紹
BLOB和CLOB都是大字段類型。(java)
BLOB是按二進制來存儲的,而CLOB是能夠直接存儲文字的。(sql)
一般像圖片、文件、音樂等信息就用BLOB字段來存儲,先將文件轉為二進制再存儲進去。文章或者是較長的文字,就用CLOB存儲數據庫
BLOB和CLOB在不一樣的數據庫中對應的類型也不同:
- MySQL 中:clob對應text/longtext,blob對應blob
- Oracle中:clob對應clob,blob對應blob
MyBatis提供了內建的對CLOB/BLOB類型列的映射處理支持。(app)
二、編寫Mapper文件
如下所示:Mapper文件中查詢sql的id為queryByList,report_summary為Oracle數據庫中的一個字段,是CLOB類型。
myClob為java類,在java類中定義一個String類型的字段reportSummary,用于接收CLOB信息。
Mapper.xml文件加入如下配置可以讀取CLOB和BLOB類型的數據
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>
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
在Spring Boot2中使用CompletableFuture的方法教程
這篇文章主要給大家介紹了關于在Spring Boot2中使用CompletableFuture的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧2019-01-01常用的ResponseEntity.BodyBuilder和自定義ResponseEntity的實例
這篇文章主要介紹了常用的ResponseEntity.BodyBuilder和自定義ResponseEntity的實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07