基于SSH的数据库中图片的读写
近期项目中遇到了这个问题,网上查了一些资料所谓是零零散散,这里写篇博文做个笔记。
注:这篇博文中部分类的属性声明未列出,应该不算难,基本都是以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的数据库中图片的读写的更多相关文章
- 上传图片到数据库,读取数据库中图片并显示(C#)
from:http://blog.csdn.net/bfcady/article/details/2622701 思路:建立流对象,将上传图片临时保存到byte数组中,再用SQL语句将其保存到数据库中 ...
- 使用ssh向sqlserver2005数据库中保存image类型的二进制图片
1.首先设计数据库表,其中photo.photo2字段均为image类型的. 2.建立实体bean对象,设置两个字段为byte[]如:private byte[] photo; private byt ...
- 基于 EntityFramework 的数据库主从读写分离服务插件
基于 EntityFramework 的数据库主从读写分离服务插件 1. 版本信息和源码 1.1 版本信息 v1.01 beta(2015-04-07),基于 EF 6.1 开发,支持 EF 6.1 ...
- 基于 EntityFramework 的数据库主从读写分离架构 - 目录
基于 EntityFramework 的数据库主从读写分离架构 回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目 ...
- 基于 EntityFramework 的数据库主从读写分离架构(2)- 改进配置和添加事务支持
回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目录: src\ NDF.Data.EntityFramew ...
- 基于 EntityFramework 的数据库主从读写分离架构(1) - 原理概述和基本功能实现
回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目录: src\ NDF.Data.EntityFramew ...
- [转]asp.net mvc 从数据库中读取图片
本文转自:http://www.cnblogs.com/mayt/archive/2010/05/20/1740358.html 首先是创建一个类,继承于ActionResult,记住要引用Syste ...
- asp.net mvc 从数据库中读取图片的实现代码
首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下: public class ImageResult : ActionResult { publi ...
- C# 保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox,解决报错 “无效参数”
下面是两段关键代码: /// <summary> /// 将一张图片转换为字节 /// </summary> /// <param name="img" ...
随机推荐
- 18 4Sum(寻找四个数之和为指定数的集合Medium)
题目意思:给一个乱序数组,在里面寻找三个数之和为target的所有情况,这些情况不能重复,增序排列 思路:采用3Sum的做法 ps:有见一种用hash的,存任意两个元素的和,然后变成3sum问题,需要 ...
- Canvas实现文字粒子化,并且绕轴旋转(完善)
1. 之前有放过一个初始版本,但是因为在旋转的时候,有比较大的瑕疵,造成每个点运动到端点后,出现类似撞击的感觉. 2. 所以本文对旋转作了些调整,运用类似水平方向的圆周运动 a. HTML代码,定义c ...
- CreateJS第1章 EaselJS基础 (画图)
这章学学EaselJS的基本常用API首先下载createjs库,在项目文件里新建一个js文件夹放里面http://code.createjs.com/ 各种形状 var sp = new creat ...
- python unicode&str 转化
从数据库中取出的值是Unicode编码的 需要转化为str才能正常使用 参考: http://www.mamicode.com/info-detail-308445.html
- 转:aptitude 命令详解
原文:http://www.isspy.com/aptitude-%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3/ aptitude aptitude 是 Debian GN ...
- C语言基础课程 第二课 HelloWorld不为菜鸟所知的秘密
1 愉快的开端hello world 4 1.1 include头文件包含 4 1.2 main函数 4 1.3 注释 4 1.4 {}括号,程序 ...
- sed文本处理--文本行扩展与分割
原文件: 00 abc sdfdsf1 2 45 3 400 xfd xdfssdf3 322 345 234 处理后文件: 00 abc sdfdsf 1 2 400 abc sdfdsf 5 3 ...
- 【动态规划】【KMP】HDU 5763 Another Meaning
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5763 题目大意: T组数据,给两个字符串s1,s2(len<=100000),s2可以被解读成 ...
- Eclipse中处理图片引包问题
在Eclipse中处理图片,需要引入两个包:import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEG ...
- C/C++常用算法【C语言顺序查找(随机数)】【1】
这是我学习唐峻,李淳的<C/C++常用算法第一天> 1.8.1. 查找数字: 程序随机生成一个拥有20个整数数据的数组,然后输入要查找的数据.接着,可以采用醉简单的逐个对比的方法进行查找, ...