在MySQL中保存Java对象_java对象储存到数据库
一. 概述
在開(kāi)發(fā)一些工具的時(shí)候, 經(jīng)常會(huì)用到反射, 其中有個(gè)方法Object invoke(Object obj, Object... args), 參數(shù)里有很多對(duì)象參數(shù), 如果我們想預(yù)先把參數(shù)保存下來(lái), 之后就方便執(zhí)行了, 應(yīng)用場(chǎng)景: 例如推送數(shù)據(jù)失敗重推. 本文將介紹如何把把對(duì)象轉(zhuǎn)成字符串保存到數(shù)據(jù)庫(kù)
二. 代碼
2.1 編寫(xiě)工具類
import javax.xml.bind.DatatypeConverter;
class ObjectUtil {
/**
* 把對(duì)象轉(zhuǎn)成字符串
*/
public static String objectToString(Object obj) {
// 對(duì)象轉(zhuǎn)字節(jié)數(shù)組
AtomicReference str = null;
Optional.ofNullable(obj).ifPresent(o -> {
try {
byte[] bytes = ObjectSerialize.writeObj(o);
str.set(DatatypeConverter.printBase64Binary(bytes));
} catch (Exception e) {
e.printStackTrace();
}
});
return str.get();
}
/**
* 解析字符串為對(duì)象
*/
public static Object stringToObject(String str) {
AtomicReference obj = null;
Optional.ofNullable(str).ifPresent(s -> {
try {
byte[] bytes = DatatypeConverter.parseBase64Binary(str);
obj.set(readObj(bytes));
} catch (Exception e) {
e.printStackTrace();
}
});
return obj.get()
}
/**
把對(duì)象轉(zhuǎn)為字節(jié)數(shù)組
*/
public static byte[] writeObj(Object obj) throws Exception {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream outputStream = new ObjectOutputStream(byteArrayOutputStream);
outputStream.writeObject(obj);
outputStream.close();
return byteArrayOutputStream.toByteArray();
}
/**
把字節(jié)數(shù)組轉(zhuǎn)為對(duì)象
*/
public static Object readObj(byte[] bytes) throws Exception {
ObjectInputStream inputStream = null;
try {
inputStream = new ObjectInputStream(new ByteArrayInputStream(bytes));
return inputStream.readObject();
} finally {
inputStream.close();
}
}
}
2.1 測(cè)試
import javax.xml.bind.DatatypeConverter;
public class Test{
@Test
public void ObjectToString(){
// 聲明一個(gè)對(duì)象
HelloWorld hello= new HelloWorld();
// 把對(duì)象轉(zhuǎn)成字符串
String str = ObjectUtil.objectToString(hello) ;
// 解析字符串為對(duì)象
hello = (HelloWorld)ObjectUtil.stringToObject(str)
}
}
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的在MySQL中保存Java对象_java对象储存到数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vectornator安卓_Vector
- 下一篇: mysql 优惠卷表设计_这些年My