Mysql存储java对象实例详解
发布于 2020-3-4|
复制链接
摘记: Mysql存储java对象MySQL 设置字段为 blob
保存对象,先将对象序列化为byte[] 使用 setObject(byte[] bytes)
```java
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream out = null;
try {
out = new ObjectOutputStream(baos);
out.writeObject(java实例对象);
} catch (IOException e) { ..
Mysql存储java对象MySQL 设置字段为 blob保存对象,先将对象序列化为byte[] 使用 setObject(byte[] bytes)
```java
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream out = null;
try {
out = new ObjectOutputStream(baos);
out.writeObject(java实例对象);
} catch (IOException e) {
logger.error("msg2Bytes error!", e);
}finally{
try {
out.close();
} catch (IOException e) {
logger.error("msg2Bytes error!", e);
}
}
return baos.toByteArray();
```
获取对象 使用getBytes(),将获取的byte[]反序列化为Java 对象
```java
ByteArrayInputStream bais;
ObjectInputStream in = null;
try{
bais = new ByteArrayInputStream(bytes);
in = new ObjectInputStream(bais);
return (java类)in.readObject();
}finally{
if(in != null){
try {
in.close();
} catch (IOException e) {
logger.error("bytes2Msg error!", e);
}
}
}
```
网上的其他方式会有各类问题,请慎用。
包括:
1.设置url参数 autoDeserialize=true
2.setObject(java实例对象) 查询
ObjectInputStream oips = new ObjectInputStream(rs.getBinaryStream(1));
ArrayList obb = (java类)oips.readObject();//从流中读取对象