在MySQL中保存Java对象_java对象储存到数据库
一. 概述
在开发一些工具的时候, 经常会用到反射, 其中有个方法Object invoke(Object obj, Object... args), 参数里有很多对象参数, 如果我们想预先把参数保存下来, 之后就方便执行了, 应用场景: 例如推送数据失败重推. 本文将介绍如何把把对象转成字符串保存到数据库
二. 代码
2.1 编写工具类
import javax.xml.bind.DatatypeConverter;
class ObjectUtil {
/**
* 把对象转成字符串
*/
public static String objectToString(Object obj) {
// 对象转字节数组
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();
}
/**
* 解析字符串为对象
*/
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()
}
/**
把对象转为字节数组
*/
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();
}
/**
把字节数组转为对象
*/
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 测试
import javax.xml.bind.DatatypeConverter;
public class Test{
@Test
public void ObjectToString(){
// 声明一个对象
HelloWorld hello= new HelloWorld();
// 把对象转成字符串
String str = ObjectUtil.objectToString(hello) ;
// 解析字符串为对象
hello = (HelloWorld)ObjectUtil.stringToObject(str)
}
}
在MySQL中保存Java对象_java对象储存到数据库相关推荐
- java memcached 存储对象_memcached—向memcached中保存Java实体需注意的问题
今天以代码实例的形式总结一下向memcached中保存Java实体需注意的问题: memcached工具类代码: package com.ghj.packageoftool; import java. ...
- 以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)...
在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么? 为 ...
- java复制对象_JAVA对象复制的方法
1.概述 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与 ...
- java创建数组对象_java对象数组 创建对象数组,初始化对象数组
对象数组的概念: 如果一个数组中的元素是对象类型,则称该数组为对象数组. 当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象. 对象数组的定义和使用: 对象数组 ...
- MySQL中保存emoji表情
如果想要在MySQL数据库中保存表情这种字符,若字符集编码utf8或者其他字符集,当执行插入数据库操作就会抛错 Incorrect string value: '\xF0\x9F...' for co ...
- eclipse中保存Java文件时出现错误:Save could not be completed. Try File Save As... if the problem persists.
一.问题描述 eclipse中保存文件时出现错误:Save could not be completed. Try File > Save As- if the problem persists ...
- java中何时不能实例_Java对象实例是何时被创建
您可能感兴趣的话题: Java 核心提示:对象实例何时被创建,这个问题也许你用一句话就能回答完了.但是它的潜在陷阱却常常被人忽视,这个问题也许并不像你想的那么简单,不信请你耐心看下去. 对象实例何时被 ...
- java jvm对象_Java对象在JVM中长啥样
前言 Java 是门面向对象的开发语言,那么我们自己编写的 Java 类生成的对象是什么样的?它肯定保存在虚拟机的内存中,但它以怎样的结构来保存的呢?带着疑问往下看看. 关于Klass Java 层的 ...
- java流对象_Java对象流的使用
为了让对象持久化(把对象存储到本地),可以使用java的对象流处理对象,把对象的内容写到本地存储的文件中,也可以从本地文件中读取出来.也就是常说的序列化和反序列化 主要用到了ObjectInputSt ...
最新文章
- python3.8安装教程-二、Python2.7的安装并与Python3.8共存
- Python 中的 if __name__ == __main__ 该如何理解
- pikachu漏洞靶机之xss漏洞post提交方式
- Maven resource标签
- 两个实用的Python的装饰器
- 华为Mate 20 X 5G版本月起全球开卖:国内上市的首款5G手机
- html5转换成mp4视频,HTML5的canvas动画转视频MP4
- 基于BERT进行商品标题实体识别,很详细~
- 用css实现文本不换行切超出限制时显示省略号(小tips)
- 如何利用极域电子教室软件漏洞干翻所有机房
- C#正则表达式提取txt小说目录
- IDEA插件修改class文件
- Windows窗口固定工具
- Java基础知识点梳理
- Boost Asio介绍
- 女性bmi计算器JAVA代码_简单的BMI计算器
- 【Unity】如何使用MD5加密方式传递资料
- 判断用户flash是否安装了flash以及flash的版本
- idea如何查看已安装的插件
- itemarray的意思