BLOB字段数据读取

 因为开发的时候公司的项目,所以只能说明不能截图了,在这里请大家谅解。

     BLOB这个字段,首先是存大数据的,本人倒是不建议在数据库中存入那么大的数据,影响服务器性能。而且如果表没有采用分布存储,没有考虑维护,一段时间就会很大,本人一点见解,表大小超过1G的容量时候,明显影响数据读取速度。这个扯的有点远了,回归正题。

  我了解的系统是用HIBernate 读取大容量的BLOB,中间采用SPRING进行管理。

在SPRING applicationContext.xml中配置

 <bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />

 并将其映射到TransactionMaanger中

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
            <property name="lobHandler" ref="lobHandler"/> 
    </bean> 

 

在程序中 如有以下对象

public class USER{
 private BLOB Info;
private String name;
//生成get和set方法


}

 HIbernate 读取BLOB字段

BLOB blob=User.getInfo();
if(blob.length>0)
{
Byte[] bytes=new Byte[blob.length-1];
bytes=blob.getBytes();//装到bytes数组里;
//转换成String
string str=new String(bytes,"GBK");
}

 这样就转换过来了。

我之所以要写 HIBernate 的读取 是要跟Ibatis做对照

因为在iBatis 中查询返回List 当然BLOB字段也是被查询出来了。

我调试了以下发现 List中装的就是HashMap 一个是BLOB字段,一个当然是值,仔细在看发现就是bytes格式看来不用转了。直接就可以用

//这里是伪代码只表达大意
Iterator it=list.iterator();
while(it.hashnext())
{
HashMap hm=(HashMap)it.next();

Bytes[] bytes=hm.get("info").getValue();//这样就把BLOB数据装进去了。


}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值