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



hibernate学习笔记(5)在数据库中存取图片的更多相关文章

  1. Cocos2dx 学习笔记整理----在项目中使用图片(二)

    之前了解了一种比较简单的图片的使用方式, 今次来了解稍微复杂一点的图片使用方式,plist+png. 这里要用到之前提到的Texture Packer. Texture Packer是一款图片打包工具 ...

  2. Cocos2dx 学习笔记整理----在项目中使用图片(三)

    这节练习下DragonBones. 手机由于性能所限,需要特注意资源的使用. 游戏项目的话由于资源比较多,一般都会用到DragonBones来做动作,这个又称为龙骨. DragonBones传送点:h ...

  3. Cocos2dx 学习笔记整理----在项目中使用图片(一)

    cocos2dx有多种使用图片的方法,先来个最简单的:用CCSprite直接使用图片. 首先,进入到之前建立的项目,把你将要使用的图片放入到目录下的Resources文件夹里面.项目中以相对路径使用资 ...

  4. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  5. Hibernate学习笔记(二)

    2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...

  6. Hibernate学习笔记(一)

    2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...

  7. Hibernate 学习笔记一

    Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...

  8. Hibernate学习笔记二

    Hibernate持久化类的编写规则 Hibernate是持久层的ORM映射框架,专注于数据的持久化工作.所谓持久化,就是将内存中的数据永久存储到关系型数据库中. 持久化类 一个java类与数据库表建 ...

  9. SQLMAP学习笔记2 Mysql数据库注入

    SQLMAP学习笔记2 Mysql数据库注入 注入流程 (如果网站需要登录,就要用到cookie信息,通过F12开发者工具获取cookie信息) sqlmap -u "URL" - ...

随机推荐

  1. php攻击漏洞总结

    1.两字节编码(gbk)都存在宽字节攻击问题[character_set_client=gbk] 案例:http://www.cnblogs.com/lcamry/articles/5625276.h ...

  2. 子矩阵(暴搜(全排列)+DP)

    子矩阵(暴搜(全排列)+DP) 一.题目 子矩阵 时间限制: 1 Sec  内存限制: 128 MB 提交: 1  解决: 1 [提交][状态][讨论版] 题目描述 给出如下定义: 1. 子矩阵:从一 ...

  3. linux下图形字符的命令

    banner sudo apt-get install sysvbanner banner song 若更改字体可以使用banner song printerbanner -w 50 A toilet ...

  4. 使用 docker 拉取镜像和创建容器-nginx

    本文主要分享通过从docker  hub上获取nginx镜像 1.首先查找nginx镜像 [root@node1 ~]# docker search nginx NAME DESCRIPTION ST ...

  5. URL格式和urlencode

    URL的格式:protocol :// hostname[:port] / path / [;parameters][?query]#fragment URL出现了有+,空格,/,?,%,#,& ...

  6. dilworth定理的通俗讲解

    度娘定义:在数学理论中的序理论与组合数学中,Dilworth定理根据序列划分的最小数量的链描述了任何有限偏序集的宽度.其名称取自数学家Robert P. Dilworth. 反链是一种偏序集,其任意两 ...

  7. OpenCV - Android Studio 2.2 中利用CAMKE进行OpenCV的NDK开发

    我在http://www.cnblogs.com/fx-blog/p/8206737.html一文中提到了如何在Android Studio中Java层导入OpenCV(包含opencv_contri ...

  8. 242. Valid Anagram Add to List

    Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...

  9. 九、python沉淀之路--递归、全局变量、局部变量、作用域

    一.递归 1.递归函数,同时使用嵌套,并且是将别的函数作用于调用函数里面 例1 num = [1,2,3,4,5] def add_one(i): return i+1 def reduce(i): ...

  10. mapreduce-实现多表关联

    //map package hadoop3; import java.io.IOException; import org.apache.hadoop.io.LongWritable;import o ...