IBATIS操作BLOB和CLOB
2012-12-27 11:25
344 查看
数据库中有些字段因为存储的数据量大,而使用特殊格式进行存储,常用的数据类型为BLOB和CLOB格式。
BLOB(binary large object)和CLOB(Character Large Object)都是数据库中的一种保存文件所使用的类型。都用来存储大对象,BLOB是二进制大对象,是存储二进制文件的容器,典型的BLOB是一张图片或一个声音文件。CLOB使用CHAR来保存数据,常用来保存XML文档。
本次项目中的数据库(Oracle)使用的是BLOB来存储大量文本和数字信息。项目使用Ibatis来实现对BLOB的读取。需求是将BLOB数据读出来显示为字符串.按照一般的读字符串的写法做时会报错,显示为无法转换,那么就需要进行显示的配置转换类型.
数据库中字段类型为BLOB.
主要是Ibatis的配置:
java代码如下:
如果没有配置tempblob格式来指定blob数据格式,而直接使用resultMap="java.lang.String",或者使用resultMap="oracle.sql.BLOB",或者使用resultMap="java.sql.Blob"这几种数据格式都是读不出来数据的,经过多次测试,有只用配置jdbcType="BLOB",javaType="java.lang.String",Ibatis才能正确识别,并将Blob数据转换成String进行输出.
CLOB也是同样情况,对CLOB的处理只需设置jdbcType="CLOB"即可.
BLOB(binary large object)和CLOB(Character Large Object)都是数据库中的一种保存文件所使用的类型。都用来存储大对象,BLOB是二进制大对象,是存储二进制文件的容器,典型的BLOB是一张图片或一个声音文件。CLOB使用CHAR来保存数据,常用来保存XML文档。
本次项目中的数据库(Oracle)使用的是BLOB来存储大量文本和数字信息。项目使用Ibatis来实现对BLOB的读取。需求是将BLOB数据读出来显示为字符串.按照一般的读字符串的写法做时会报错,显示为无法转换,那么就需要进行显示的配置转换类型.
数据库中字段类型为BLOB.
主要是Ibatis的配置:
<!--设置blob字段的返回格式--> <resultMap id="tempblob" class="java.util.HashMap"> <result property="CONTENT" column="CONTENT" jdbcType="BLOB" javaType = "java.lang.String" /> </resultMap> <!--通过cuid查到blog字段的数据,配置上返回格式为tempblob--> <select id="queryBlobByCuid" parameterClass="java.lang.String" resultMap="tempblob"> SELECT CONTENT FROM TEST WHERE CUID=#CUID# </select>
java代码如下:
/** * 通过cuid查询blob * @param cuid * @return blob的String * @throws Exception * @author WHuan */ public String getBlobByCuid(String serviceCuid) throws Exception { Map map = (Map) this.IbatisResDAO.getSqlMapClientTemplate() .queryForObject(sqlMap+".queryBlobByCuid", serviceCuid); String StrResult=""; if(map!= null){ byte[] blobBytes = (byte[])map.get("CONTENT"); //转为gbk编码 StrResult=new String(blobBytes,"GBK"); } return StrResult; }
如果没有配置tempblob格式来指定blob数据格式,而直接使用resultMap="java.lang.String",或者使用resultMap="oracle.sql.BLOB",或者使用resultMap="java.sql.Blob"这几种数据格式都是读不出来数据的,经过多次测试,有只用配置jdbcType="BLOB",javaType="java.lang.String",Ibatis才能正确识别,并将Blob数据转换成String进行输出.
CLOB也是同样情况,对CLOB的处理只需设置jdbcType="CLOB"即可.
相关文章推荐
- jdbc hibernate ibatis 操作Blob 和Clob类型字段(不断更新)
- IBATIS操作ORACLE BLOB CLOB(转)
- IBATIS操作ORACLE BLOB CLOB
- IBATIS操作ORACLE BLOB CLOB(转)
- ibatis中操作Oracle的blob,clob大数据方法
- IBATIS操作BLOB和CLOB
- 对oracle大对象(Blob,Clob)操作(增,删,改)的C#代码
- 【摘抄】oracle对大对象类型操作:blob,clob,nclob,bfile
- 利用JDBC操作Oracle CLOB和BLOB类型数据
- java操作 oracle 的 blob和clob类型
- 深入浅出JDBC-操作时间与大对象(Clob/Blob)
- JDBC 对oracle 的clob ,blob类型的操作方式
- ibatis操作clob
- ibatis操作clob字段(oracle9i,ibatis2.3)
- spring ibatis 操作BLOB
- java操作Oracle中的BLOB和CLOB代码示例
- Ibatis + Spring 操作 Blob 详解
- jdbc操作Blob和Clob字段与字符串的转换
- 在sqlplus中操作blob和clob
- 通过JDBC 操作 ORACLE BLOB,CLOB字段类型