`
当当猫
  • 浏览: 47034 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

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数据装进去了。


}

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics