近期项目中遇到了这个问题,网上查了一些资料所谓是零零散散,这里写篇博文做个笔记。

注:这篇博文中部分类的属性声明未列出,应该不算难,基本都是以private 类型 名称 格式声明,然后配getter setter方法

首先是图片入库的过程,这里是固定的图片入库,项目应用中根据需要可以调整图片的URL

对应实体类:

 @Entity
@Table(name = "xxx")
public class Image { private long id;
private byte[] photo; @Id
@Column(name = "ID", unique = true, nullable = false, length = 11)
public long getId() {
return id;
}
public void setId(long id) {
this.id= id;
}
@Column(name = "PHOTO")
public byte[] getPhoto() {
return photo;
}
public void setPhoto(byte[] photo) {
this.photo = photo;
} }

入库方法:(这里的perDao是用的Hibernate经过一层封装,基本方法是调用HibernateTemplate中的saveOrUpdate)

 public void insertPhoto(long id) throws IOException{
Image image = new Image();
File file = new File("E:/workspace/xxxx/src/test.png");
InputStream a = new FileInputStream(file);
byte[] b = new byte[a.available()];
a.read(b);
image.setId(id);
image.setPhoto(b);
System.out.println(b.length);
perDao.save(personImage);
a.close();
}

接下来是读取的过程:

页面代码:

图片的src指向返回流的action,可以带参数

<img id="empImg" src="person_getPhotoById.action?id=<%=id %>" />

struts2配置文件中的配置如下

    <package name="person" extends="json-default">
<action name="person_*" class="personAction" method="{1}">
<result name="getPhotoById" type="stream">
<param name="root">inputStream</param>
</result>
</action>
</package>

action层方法:

public String getPhotoById(){try {
Blob blob = Hibernate.createBlob(personService.getPhotoById(id));
inputStream = blob.getBinaryStream();
} catch (Exception e) {
e.printStackTrace();
}
return "getPhotoById";
}

service层方法:

public byte[] getPhotoById(long id){
List<PersonImage> result = personDao.getPhotoById(id);
return result.get(0).getPhoto();
}

dao层方法:

public List getPhotoById(long id){
String hql = "FROM Image WHERE id = ?";
Long[] items = {id};
return perDao.findByHql(hql, items);
}

具体方法就是这些,如果有什么问题或者更好的方案可以留言分享

基于SSH的数据库中图片的读写的更多相关文章

  1. 上传图片到数据库,读取数据库中图片并显示(C#)

    from:http://blog.csdn.net/bfcady/article/details/2622701 思路:建立流对象,将上传图片临时保存到byte数组中,再用SQL语句将其保存到数据库中 ...

  2. 使用ssh向sqlserver2005数据库中保存image类型的二进制图片

    1.首先设计数据库表,其中photo.photo2字段均为image类型的. 2.建立实体bean对象,设置两个字段为byte[]如:private byte[] photo; private byt ...

  3. 基于 EntityFramework 的数据库主从读写分离服务插件

    基于 EntityFramework 的数据库主从读写分离服务插件 1. 版本信息和源码 1.1 版本信息 v1.01 beta(2015-04-07),基于 EF 6.1 开发,支持 EF 6.1 ...

  4. 基于 EntityFramework 的数据库主从读写分离架构 - 目录

    基于 EntityFramework 的数据库主从读写分离架构       回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目 ...

  5. 基于 EntityFramework 的数据库主从读写分离架构(2)- 改进配置和添加事务支持

        回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目录:      src\ NDF.Data.EntityFramew ...

  6. 基于 EntityFramework 的数据库主从读写分离架构(1) - 原理概述和基本功能实现

        回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目录:      src\ NDF.Data.EntityFramew ...

  7. [转]asp.net mvc 从数据库中读取图片

    本文转自:http://www.cnblogs.com/mayt/archive/2010/05/20/1740358.html 首先是创建一个类,继承于ActionResult,记住要引用Syste ...

  8. asp.net mvc 从数据库中读取图片的实现代码

    首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下: public class ImageResult : ActionResult { publi ...

  9. C# 保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox,解决报错 “无效参数”

    下面是两段关键代码: /// <summary> /// 将一张图片转换为字节 /// </summary> /// <param name="img" ...

随机推荐

  1. jQuery api 学习笔记(1)

      之前自己的jquery知识库一直停留在1.4的版本,而目前jquery的版本已经更新到了1.10.2了,前天看到1.10中css()竟然扩充了那么多用法,这2天就迫不及待的更新一下自己的jquer ...

  2. Jquery异步请求数据实例

    一.Jquery向aspx页面请求数据 前台页面JS代码: $("#Button1").bind("click", function () { $.ajax({ ...

  3. javascript获取div高度

    DOM的: 获得了div的高度值 = document.getElementById("目标id").offsetHeight;

  4. xamp配置多域名站点

    xampp配置多站点出现,htdocs目录和虚拟目录二者只能选其一的情况,我的xampp安装在D:\xampp\,默认web根目录在D:\xampp\htdocs,然后我在D:\magento安装了m ...

  5. linux安装时提示发生不正常错误问题

    跳过md5系统较检(每个系统版本都有一个md5编码唯一) 在安装CentOS时 提示 找不到磁盘,是否安装程序,选择安装程序进行"下一步" 提示: 发生不规则,不正常错误 原因:没 ...

  6. 利用python建表

    (ENV)carlo@ubuntu:~/flasky$ python hello.py shell >>> from hello import db>>> db.d ...

  7. UFLDL实验报告3:Self-taught

    Self-taught 自我学习器实验报告 1.Self-taught 自我学习实验描述 自我学习是无监督特征学习算法,自我学习意味着算法能够从未标注数据中学习,从而使机器学习算法能够获得更大数量的数 ...

  8. Python使用纯真年代数据库qqwry.dat转换物理位置

    PS:网上直接找的,贴出来,方便以后随时用,感谢分享的人. #!/usr/bin/python #encoding: utf-8 import socket import codecs import ...

  9. Expert Shell Scripting

    Expert Shell Scripting 好好学习这本书

  10. 【Java】对Web Service的理解

    WSDL(Web Service Description Language)是描述Web Service的语言. 你会怎样向别人介绍你的Web service有什么功能,以及每个函数调用时的参数呢?你 ...