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();
      }

    
    
    
    



  • 相关阅读:
    MySQL命名、设计及使用规范--------来自标点符的《MySQL命名、设计及使用规范》
    Mybatis 在 insert 之后想获取自增的主键 id
    MyBatis动态SQL foreach标签实现批量插入
    PowerDesigner设置表字段唯一约束
    Hadoop基本介绍
    oracle的行级触发器使用
    RFID-RC522、FM1702SL、M1卡初探
    PHP处理海量样本相似度聚类算法
    RFID(Radio Frequency Identification 射频识别)基本概念
    USB Keyboard Recorder
  • 原文地址:https://www.cnblogs.com/lzhc/p/6522191.html
Copyright © 2011-2022 走看看