java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > MyBatis处理CLOB/BLOB类型数据及解决读取

MyBatis处理CLOB/BLOB类型数据以及解决读取问题

作者:luckySnow-julyo

这篇文章主要介绍了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在不一样的数据库中对应的类型也不同:

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>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文