Java hibernate blob图片读取

开始我并不知道之前的Coder的怎么存储的图片,我也看不到代码。

查看数据库图片存成了Blob类型,最后可以读取成base64的string,并在页面展示出来。

{首先我在度娘上搜:“java hibernate blob读取”之类的,最后用的例子都是查询一个ResultSet结果集回来,然后通过rs.getBlob(keyName)才可以正确读取(谁配置了Hibernate还用java的ResultSet来读取数据的??),或者是配置一大堆Spring 或者 Hibernate的xml,或者是什么的,结果都不好用。反正我的目的就是将Oracle的Blob字段查询出来,并转成base64的字符串,最后在页面显示出来}

我们配置的是spring-hibernate,Dao层直接是HibernateDaoSupport或者是该类的继承类。

首先,配置hibernate的实体类Pojo,下面是例子

//这里配置的image属性为java.sql.Blob而不是oracle.sql.BLOB
public ImageInfo{
    
    @Id
    @Column(name="id")
    private String Id;

    @Lob
    @Basic(fetch=FetchType.LAZY)
    @Column(name="image",columnDefinition="BLOB")
    private java.sql.Blob image;

    //下面是getter 和 setter 省略了

}

然后数据查询的时候,可以使用普通的Hibernate提供的查询方法,查询的结果是List<ImageInfo>,dao层、service层的查询代码就省略了,每个人的底层都不一样,只要查询的结果是List<ImageInfo> 或者 是ImageInfo类型就可以

//上下文的代码省略,下面是已经读取到List<ImageInfo>后的代码

import java.sql.Blob;
import sumn.misc.BASE64Encoder;
...

...
List<ImageInfo> imgList = XXDao.query(...);
for(int i=0,size=imgList.size(); i<size; i++){
    Blob imgBlob = imgList.get(i).getImage();
    try{
        BufferedInputStream bis = new BuffferedInputStream(imgBlob.getBinaryStream());
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] buff = new byte[1024];
        int index = 0;
        while( (index=bis.read(buff))!=-1 ){
              out.write(buff,0,index);
        }
        BASE64Encoder encoder = new BASE64Encoder();
        String base64string = encoder.encode(out.toByteArray());
        
        //...

        bis.close();
        out.close();

    }catch(...){...}
}

//...

上面的base64stirng就是我们想要的内容了

转载于:https://my.oschina.net/u/1779802/blog/1052802

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值