package com.sj.test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.sj.domain.Palm;
import sunjing.util.HibernateUtil;
public class PostgresTest {
/**
* @param args
* @throws IOException
* @throws SQLException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws IOException, SQLException, ClassNotFoundException {
// TODO Auto-generated method stub
// palm.setAcceptorNum("3");
// palm.setPalmNum("008");
//
// Map map = new HashMap();
// map.put("1","红烧鱼头");
// palm.setTestValue(ObjectToBlob(map));
Session session = HibernateUtil.getSession();
// Transaction ts = session.beginTransaction();
// session.save(palm);
// Query query = session.createQuery("from Palm t");
// List list = query.list();
// ts.commit();
// session.close();
/**
/取数据
Palm palm = new Palm();
Session session = HibernateUtil.getSession();
Query query =session.createQuery("from Palm p where p.palmNum='008'");
List list =query.list();
System.out.println(list);
Palm palm1=((Palm)list.get(0));
System.out.println("21"+palm1.getPalmNum()+palm1.getTestValue());
Object test = BlobToObject(palm1.getTestValue());
Map test1 = (Map) test;
System.out.println("test1:"+test1.get("1"));
}
/*
* 将对象转化成java.sql.Blob
* 要求 对象是序列化的
*/
public static java.sql.Blob ObjectToBlob(Object obj) throws IOException{
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream outputStream = new ObjectOutputStream(out);
outputStream.writeObject(obj);
byte [] bytes = out.toByteArray();
outputStream.close();
return Hibernate.createBlob(bytes);
} catch (Exception e) {
// TODO: handle exception
System.out.println( " ObjectToBlob " );
return null ;
}
}
/*
* 将java.sql.Blob 转化成 对象 相应对象
* 要求 对象是序列化的
*/
public static Object BlobToObject(java.sql.Blob desblob) throws IOException{
try {
Object obj = null;
ObjectInputStream in = new ObjectInputStream(desblob.getBinaryStream());
obj = in.readObject();
in.close();
return obj;
} catch (Exception e) {
// TODO: handle exception
System.out.println( " BlobToObject " );
e.printStackTrace();
}
return null;
}
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping >
<class name="com.sj.domain.Palm" table="palm" lazy="true">
<!-- persist common fields START -->
<id name="id" type="long" column="id"
unsaved-value="null" access="field">
<generator class="native" />
</id>
<property name="palmNum" type="string" column="palmNum" />
<property name="acceptorNum" type="string" column="acceptorNum" />
<property name="fixingNum" type="string" column="fixingNum" />
<property name="testValue" type="blob" column="valueTest" />
</class>
</hibernate-mapping>
package com.sj.domain;
import java.io.Serializable;
import java.sql.Blob;
/**
* 点菜机
* @author sunjing
*
*/
public class Palm implements Serializable {
private Long id;
private String palmNum; //点菜机编号
private String acceptorNum; //连接器编号
private String fixingNum; //点菜机设备号
private Blob testValue; //postgres数据库类型为oid
public String getPalmNum() {
return palmNum;
}
public void setPalmNum(String palmNum) {
this.palmNum = palmNum;
}
public String getAcceptorNum() {
return acceptorNum;
}
public void setAcceptorNum(String acceptorNum) {
this.acceptorNum = acceptorNum;
}
public String getFixingNum() {
return fixingNum;
}
public void setFixingNum(String fixingNum) {
this.fixingNum = fixingNum;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Blob getTestValue() {
return testValue;
}
public void setTestValue(Blob testValue) {
this.testValue = testValue;
}
}
public static void writeObject(MapSystemInfo map) {
try {
FileOutputStream outStream = new FileOutputStream(System.getProperty("user.dir")+"//TXT//营业数据序列化.txt");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outStream);
objectOutputStream.writeObject(map);
outStream.close();
System.out.println("successful");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static MapSystemInfo readObject(){
FileInputStream freader;
try {
freader = new FileInputStream(System.getProperty("user.dir")+"//TXT//营业数据序列化.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(freader);
MapSystemInfo map = new MapSystemInfo();
map = (MapSystemInfo) objectInputStream.readObject();
if(map!=null){
return map;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}