将文件存储到数据库(以二进制流的形式)

Hibernate方法

HibernateUtils.java

package yang.fang.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 * hibernate工具类
 * 
 * @author zhaoqx
 * 
 */
public class HibernateUtils {
	private static Configuration conf;
	private static SessionFactory sf;
	static {
		conf = new Configuration().configure();// 读取hibernate.cfg.xml
		sf = conf.buildSessionFactory();
	}

	public static Session getSession() {
		return sf.openSession();
	}

	public static void main(String[] args) {
		getSession();
	}
}


Person.java

package yang.fang.hibernate;

public class Person {
	private Integer id;
	private String username;
	private String password;
	private String email;
	private String birthday;
	private String job;
	private String salary;
	private byte[] photo; // 头像图片

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getBirthday() {
		return birthday;
	}

	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}

	public String getJob() {
		return job;
	}

	public void setJob(String job) {
		this.job = job;
	}

	public String getSalary() {
		return salary;
	}

	public void setSalary(String salary) {
		this.salary = salary;
	}

	public Person() {
		super();
	}

	public Person(String username, String birthday, String salary) {
		super();
		this.username = username;
		this.birthday = birthday;
		this.salary = salary;
	}

	@Override
	public String toString() {
		return "Person [id=" + id + ", username=" + username + ", password="
				+ password + ", email=" + email + ", birthday=" + birthday
				+ ", job=" + job + ", salary=" + salary + "]";
	}

	public byte[] getPhoto() {
		return photo;
	}

	public void setPhoto(byte[] photo) {
		this.photo = photo;
	}

}

Person.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="yang.fang.hibernate">

	<class name="Person" table="person">
		<id name="id">
			<generator class="native" />
		</id>
		<property name="username" />
		<property name="password" />
		<property name="email" />
		<property name="birthday" />
		<property name="job" />
		<property name="salary"/>
		<!-- 头像,二进制类型,最好指定长度 -->
		<property name="photo" type="binary" length="1024000"></property>
	</class>

</hibernate-mapping>

TestHibernate.java

package yang.fang.hibernate;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Conjunction;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Disjunction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

public class TestHibernate {
	// 增加测试记录
	@Test
	public void test1() throws Exception {
		Session session = HibernateUtils.getSession();
		Transaction tr = session.beginTransaction();

		InputStream in = new FileInputStream("F:/test.jpg");
		byte[] photo = new byte[in.available()];
		in.read(photo);
		in.close();

		Person person = new Person();
		// person.setId(5);
		person.setUsername("欧阳锋");
		person.setPassword("******");
		person.setEmail("ouyang@qq.com");
		person.setBirthday("1989-05-07");
		person.setJob("上班");
		person.setSalary("60000");
		person.setPhoto(photo);

		session.save(person);

		tr.commit();
		session.close();
	}
}

取出图片

public void testGet() throws Exception
    <span style="font-family: Arial, Helvetica, sans-serif;">Session session = HibernateUtils.getSession();</span><pre name="code" class="html">    Transaction tr = session.beginTransaction();
Person p = (Person) session.get(Person.class, 1); // 获取 System.out.println(person.getPhoto()); OutputStream out = new FileOutputStream("D:/apple.png"); out.write(person.getPhoto()); out.close(); tx.commit(); session.close();}





发布了25 篇原创文章 · 获赞 18 · 访问量 6万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览