環境:mysql8 mybatis
背景:最近在做一個功能時需要對程序生成的對象保存到數據庫中。
注意事項:需要存儲的對象需要實現序列化接口
例:
import java.io.Serializable;
public class Test implements Serializable {
//一些屬性
.......
}
代碼:
實體類:
public class Entity {
private String id;
.....
//用來存儲序列化后的對象
private byte[] blob;
//get和set方法
......
}
寫數據庫:將字節數組寫進數據庫,博主在mysql數據庫創建相關字段時使用的是Blob類型。
public void writeMysql(Object object) { byte[] bytes = new byte[0]; try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { ObjectOutputStream outputStream = new ObjectOutputStream(byteArrayOutputStream); outputStream.writeObject(object); bytes = byteArrayOutputStream.toByteArray(); } catch (Exception e) { e.printStackTrace(); } //下面寫數據庫 。。。。。。 }
讀數據庫:從數據庫中讀取blob類型數據,然后使用ObjectInputStream將對象反序列化
public void readMysql(Object object) {
// 從數據庫中查詢出結果
Object mysqlobject = 從數據查詢出來的結果;
byte[] bytes = (byte[])從mysqlobject中取出存儲的序列化對象
ObjectInputStream inputStream = null;
inputStream = new ObjectInputStream(new ByteArrayInputStream(bytes));
Object object3 = inputStream.readObject();
//object3就是存儲之前的對象,接下來可以對object3強制轉換為存儲之前的類型,進行其他操作
。。。。。。。
}
