数据库使用blob类型,不需指定长度
实体类也是使用blob类型,如果是自动生成的,也要改为blob类型,记得xml中也要修改,如下:
Session session = super.getSession();//创建session,方法不限
//插入数据库的图片为1.jpg
FileInputStream fis=new FileInputStream("1.jpg");
byte[] byteArray = new byte[fis.available()];
//将图片读取到byte数组中
fis.read(byteArray);
//创建blob类型
Blob blob = Hibernate.createBlob(byteArray);
session.beginTransaction();
Mydata da = new Mydata();
da.setData(blob);
//插入数据库就可以了
session.save(da);
session.getTransaction().commit();
如果要读取这张图片,就使用下面:
//创建session,方法不限
Session session = super.getSession();
//读取表名
Mydata da = (Mydata) session.get(Mydata.class, 1);
//图片读取后叫2.jpg
FileOutputStream fos = new FileOutputStream("2.jpg");
InputStream is = da.getData().getBinaryStream();
//使用byte数组进行读取
byte[] bb = new byte[1024*4];
while (is.read(bb) != -1) {
fos.write(bb);
}
fos.close();
is.close();
刷新项目,就可以看到2.jpg了,如果读取后的图片有点模糊,就改一下上面byte数组的长度