目标:
在oracle里建一个字段,存储为一个blob类型,用于存储图片或者是其它格式的流信息或大数据,数据库中间件使用ibatis,主要做图片的存储使用,服务器使用weblogic
实现的时候碰到的问题:
ibatis对blob类型的数据有一个专门的支持.需要配置相关的配置文件,框架中使用了部分Spring的配置,在读出的图片进行写入的时候碰到问题为不能正确write到页面上,后使用纯servlet进行解决。此为weblogic对文件有拦截
具体配置如下。
ApplicationContext.xml中增加以下配置
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="transactionManagerRootProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="proxyTargetClass">
<value>false</value>
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="select*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
在ibatis的SqlMap中增加以下配置
<!-- 添加对blob数据类型 的支持 -->
<typeHandler jdbcType="BLOB" javaType="[B" callback="org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler" />
MYDEMOPLUS.xml配置文件信息,主要是在里边加了一个别名的信息,映射一个pojo
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="ceshi">
<cacheModel id="cacheDCWJ_USER" type="LRU">
<!-- 设定缓存有效期为10秒 -->
<flushInterval minutes="10" />
<!-- 本缓存中容纳的最大数据对象数量 -->
<property name="size" value="100" />
</cacheModel>
<typeAlias alias="demoResult" type="net.htjs.zxks.pojo.CeShi" />
<!-- 查询语句 ,跟据id查询数据库中的相应数据-->
<select id="showTable" parameterClass="java.util.Map" resultClass="demoResult">
select * from ceshi where vid=#id#
</select>
<!-- 查询数据库中所有id -->
<select id="select_id" resultClass = "demoResult">
select vid from ceshi
</select>
<!-- 另外一个测试用的select -->
<select id="select_all_id" parameterClass="demoResult" resultClass = "demoResult">
select * from ceshi
</select>
<!-- 插入一个图片进数据库 -->
<insert id="insert_into" parameterClass="demoResult">
insert into ceshi(vid,name,ceshi) values(#vid#,#name#,#ceshi:BLOB#)
</insert>
</sqlMap>
pojo相应的文档CeShi.java,数据库中的blob字段在这里是一个byte流的格式,这样可以适用读写
import java.io.Serializable;
public class CeShi implements Serializable{
String vid;
String name;
//String ceshi;
byte[] ceshi;
public String getVid() {
return vid;
}
public void setVid(String vid) {
this.vid = vid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
public String getCeshi() {
return ceshi;
}
public void setCeshi(String ceshi) {
this.ceshi = ceshi;
}
**/
public byte[] getCeshi() {
return ceshi;
}
public void setCeshi(byte[] ceshi) {
this.ceshi = ceshi;
}
}
这样配置上基本己经完成,然后就是java代码的编写,可以通过
out = response.getOutputStream();
out.write(text.getCeshi());
out.flush();
out.close();
这种方法在页面上读出图片信息
分享到:
相关推荐
4. **流式处理**:在Java代码中,使用`InputStream`读取图片文件,然后通过`SqlSession`调用Mapper方法,将图片流传递给数据库。这样可以避免一次性加载整个文件到内存中。 5. **查询与下载**:同样,当查询大对象...
它支持复杂的数据类型,如XML、BLOB等,并提供了丰富的性能优化工具,如索引、分区、存储过程等。Oracle还具有高可用性特性,如RAC(Real Application Clusters)和Data Guard,确保系统的稳定运行和数据的安全。 ...
### 数据映射器指南:iBATIS.NET框架详解 #### 一、简介 **iBATIS.NET**是一款针对.NET平台的...本部分将详细介绍如何在.NET环境中使用iBATIS.NET框架进行开发,包括配置、使用示例等。更多详细信息请参阅官方文档。
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...