前言
使用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>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论