ibatis中操作Oracle的blob,clob大数据方法
2009-08-22 00:58
726 查看
在ibatis中处理blob,clob数据的方法比较简单,但有一些需要注意的地方。首先在早期的ibatis版本中,对这方面的支持其实也不算太好了,得实现一个接口。从某个版本(记不清了),ibatis对大数据的支持比较好了。具体做法如下:
1、对于blob数据的操作sqlmap的定义中并没有什么特别的,只是在定义POJO时,blob字段应该对应byte[]类型的数据即可。如:
以上这些语句与普通的CRUD并没有什么区别。再来看POJO的定义:
程序中的代码就OK了,以下再给出单位测试代码:
本该大功告成的,但是由于本人所在项目中使用的Oracle 9i,没想到Oracle早期的JDBC Driver对大数据的操作有限制(不能超过4k)。没办经过在网上分享其他网友的经验,更新版本后一切OK!恭喜恭喜!!!
1、对于blob数据的操作sqlmap的定义中并没有什么特别的,只是在定义POJO时,blob字段应该对应byte[]类型的数据即可。如:
<!--获取一个文件,字段仅列出目前使用得到的--> <select id="get" parameterClass="int" resultMap="fileResult"> <!--[CDATA[SELECT ID, NAME, AUTHOR, HITS, PUBLISHDATE, CONTENT, FILETYPE, AUDIENCE, REPORTNAME, TYPEBYCONTENT, TYPEBYTIME FROM NM_FILE WHERE ID=#value#]]> </select> <!--插入文件--> <insert id="insert" parameterClass="file"> <![CDATA[INSERT INTO NM_FILE(ID, NAME, AUTHOR, HITS, PUBLISHDATE, CONTENT, FILETYPE, AUDIENCE, REPORTNAME, TYPEBYCONTENT, TYPEBYTIME) VALUES(NM_FILE_SEQ.NEXTVAL, #name#, #author#, #hits#, #publishDate#, #content#, #fileType#, #audience#, #reportName#, #typeByContent#, #typeByTime#)]]-->
以上这些语句与普通的CRUD并没有什么区别。再来看POJO的定义:
package com.xust.myweb.bg.domain; import java.util.Date; public class File { /* * 文件ID */ private int id; /* * 文件名称 */ private String name; /* * 发布者 */ private String author; /* * 下载次数 */ private int hits; /* * 发布时间 */ private Date publishDate; /* * 文件内容 */ private byte[] content; /* * 文件类型 */ private String fileType; /* * 面向对象 */ private String audience; /* * 报表名称 */ private String reportName; /* * 按内容的报表类型 */ private String typeByContent; /* * 按时间分的报表类型 */ private String typeByTime; 。。。
程序中的代码就OK了,以下再给出单位测试代码:
@Test public void testInsertFile() { byte[] data = new byte[58889]; for(int i = 0; i < data.length; i++) { data[i] = (byte)(i % 256); } File source = new File(); source.setName("测试文件.rar"); source.setAuthor("老张"); source.setPublishDate(new Date()); source.setContent(data); source.setAudience("001"); source.setReportName("生产**报表"); source.setTypeByContent("生产计划"); source.setTypeByTime("年报"); try { assertNull(sqlMapClient.insert("file.insert", source)); Util util = UtilOracleImpl.getInstance(); assertEquals(1, util.getRowCount("NM_FILE")); } catch(Exception e) { e.printStackTrace(); fail("无法增加新闻!"); }
本该大功告成的,但是由于本人所在项目中使用的Oracle 9i,没想到Oracle早期的JDBC Driver对大数据的操作有限制(不能超过4k)。没办经过在网上分享其他网友的经验,更新版本后一切OK!恭喜恭喜!!!
相关文章推荐
- java操作oracle的blob,clob数据
- iBATIS操作Oracle CLOB数据
- jdbc学习:操作Oracle的CLOB和BLOB数据
- 使用JDBC4.0操作Oracle中BLOB类型的数据方法
- IBATIS操作ORACLE BLOB CLOB
- IBATIS操作ORACLE BLOB CLOB(转)
- IBATIS操作ORACLE BLOB CLOB(转)
- java操作oracle的blob,clob数据
- 利用JDBC操作Oracle CLOB和BLOB类型数据
- 使用JDBC4.0操作Oracle中BLOB类型的数据方法
- Oracle中BLOB字段存储4GB以下视频数据的方法
- 在Delphi5 中操作Oracle的Blob/Clob字段的Bug.
- oracle 中的大对象数据类型blob、clob、nclob的意义以及区别
- HTML数据保存 Oracle CLOB大对象操作
- Oracle中BLOB和CLOB数据的读写
- oracle对大对象类型操作:blob,clob,nclob,bfile
- IBATIS操作BLOB和CLOB
- 使用JdbcTemplate 向ORACLE插入大文本CLOB数据的方法
- C#中通过OleDb操作Oracle Blob数据类型
- 操作Oracle类型CLOB和BLOB