zoukankan      html  css  js  c++  java
  • hibernate学习笔记(5)在数据库中存取图片

    如何从数据库读取存入的图片,即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();
      }

    
    
    
    



  • 相关阅读:
    中国石油大学天梯赛真题模拟第三场
    中国石油大学天梯赛真题模拟第一场
    PTA 水果忍者
    演练3-1:留言管理系统的制作
    知识点4-1:哪些应该放在动作方法中?
    Week5(10月11日):国庆后补课的复杂心情
    知识点3-5:使用强类型模板
    Week5(10月10日):国庆之后,让我们整装期待元旦吧
    知识点3-6:HTML辅助方法
    知识点3-4:给视图传递数据
  • 原文地址:https://www.cnblogs.com/lzhc/p/6522191.html
Copyright © 2011-2022 走看看