如何从数据库读取存入的图片,即Blob(二进制)数据。
先从数据库读取对象。
再从获取的对象中得到blob对象。
通过blob对象的getBinaryStream()方法获取input输出流。
之后通过输出流,写文件。 ①在创建表结构时添加:
  private Blob picture;//添加照片属性
 生成get,set方法,重写构造函数,在配置文件中添加:
  <property name="picture" type="java.sql.Blob">
    <column name="picture" />
  </property>
*引包用import java.sql.Blob;千万不能引错 ②编写测试类,将照片写入数据库,代码如下:

  @Test
  public void testWriteBlob() throws Exception{
    //生成用户对象
    User u = new User(2,"李四","男");
    //获得照片文件
    File f = new File("d:"+File.separator+"123.JPG");
    //获得照片文件的输入流
    InputStream input = new FileInputStream(f);
    //创建一个Blob对象
    Blob image = Hibernate.getLobCreator(session).createBlob(input, input.available());
    //设置照片属性
    u.setPicture(image);
    //保存用户
    session.save(u);
  }

 ③将数据库中照片读出到D盘,文件名为abc:

  @Test
  public void testReadBlob() throws Exception{
    User u = (User)session.get(User.class, 2);
    //获得Blob对象
    Blob image = u.getPicture();
    //获得照片的输入流
    InputStream input = image.getBinaryStream();
    //创建输出流
    File f = new File("d:"+File.separator+"abc.jpg");
    //获得输出流
    OutputStream output = new FileOutputStream(f);
    //创建缓冲区
    byte[] buff = new byte[input.available()];
    input.read(buff);
    output.write(buff);
    input.close();
    output.close();
  }



最新文章

  1. 05.K米评测
  2. Bowtie2
  3. Multiple annotations found at this line: - The content of element type &quot;mapper&quot; must match &quot;EMPTY&quot;. - Attribute &quot;namespace&quot; must be declared for element type &quot;mapper&quot;.
  4. 【笨嘴拙舌WINDOWS】实践检验之剪切板查看器【Delphi】
  5. CSS3之背景剪裁Background-clip
  6. background小结
  7. P - A + B(第二季水)
  8. 【转】十款让 Web 前端开发人员更轻松的实用工具
  9. 从零开始学C++之构造函数与析构函数(三):深拷贝与浅拷贝、空类
  10. VS2013使用技巧汇总
  11. JavaWeb三大组件之一Filter知识总结
  12. DBA之路
  13. C#保留2位小数的做法
  14. vue学习记录②(hello world!)
  15. 登录界面,body上有背景图,点击输入框时,弹出的手机键盘会把背景图顶变形,而且会把footer顶上去
  16. 移值UCOS2到M4核与M3核的区别
  17. 全栈爬取-Scrapy框架(CrawlSpider)
  18. android-基础编程-ExpandableListview
  19. 20155228 2016-2017-2 《Java程序设计》第3周学习总结
  20. Lomboz插件

热门文章

  1. JavaWeb中的中文编码问题
  2. python中常见的日期换算
  3. GIT 应用gitreview方式提交代码过程
  4. stl_algo.h
  5. PKUSC2018 Slay The Spire
  6. UVALive - 4270 Discrete Square Roots (扩展欧几里得)
  7. Spring转账业务_注解配置事物控制
  8. webpack 插件
  9. RequireJS 也可以引入 VUE
  10. BZOJ3296:[USACO2011OPEN]Learning Language