将一个Java对象列表存储在Oracle的BLOB类型中
DAO实现中的写法:
public void saveDsPPPs(Long dataFileId, ArrayList list) {
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(list);
byte[] bytes = bo.toByteArray();
HashMap map = new HashMap();
map.put("dataFileId", dataFileId);
map.put("pppList", bytes);
pppId = (Long) getSqlMapClientTemplate().insert("addPPPs", map);
catch (IOException e) {
}
}
注意事项:
PPP对象必须实现Serializable接口,可以序列化的对象才能转成byte数组,否则会出错
sqlMap中的写法:
返回BLOB数据转换成Java对象列表
DAO实现中的写法:
public ArrayList getPPPs(Long dataFileId) {
try {
HashMap map = (HashMap) getSqlMapClientTemplate().queryForObject("getPPPs", dataFileId);
BLOB blob = (BLOB) map.get("pppList");
ObjectInputStream objStream = new ObjectInputStream(blob.getBinaryStream());
ArrayList pppList = (ArrayList) objStream.readObject();
objStream.close();
return pppList;
} catch (IOException e) {
} catch (ClassNotFoundException e) {
} catch (SQLException e) {
}
return null;
}
sqlMap中写法: