一. 概述

在开发一些工具的时候, 经常会用到反射, 其中有个方法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对象储存到数据库相关推荐

  1. java memcached 存储对象_memcached—向memcached中保存Java实体需注意的问题

    今天以代码实例的形式总结一下向memcached中保存Java实体需注意的问题: memcached工具类代码: package com.ghj.packageoftool; import java. ...

  2. 以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)...

    在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?     为 ...

  3. java复制对象_JAVA对象复制的方法

    1.概述 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与 ...

  4. java创建数组对象_java对象数组 创建对象数组,初始化对象数组

    对象数组的概念: 如果一个数组中的元素是对象类型,则称该数组为对象数组. 当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象. 对象数组的定义和使用: 对象数组 ...

  5. MySQL中保存emoji表情

    如果想要在MySQL数据库中保存表情这种字符,若字符集编码utf8或者其他字符集,当执行插入数据库操作就会抛错 Incorrect string value: '\xF0\x9F...' for co ...

  6. 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 ...

  7. java中何时不能实例_Java对象实例是何时被创建

    您可能感兴趣的话题: Java 核心提示:对象实例何时被创建,这个问题也许你用一句话就能回答完了.但是它的潜在陷阱却常常被人忽视,这个问题也许并不像你想的那么简单,不信请你耐心看下去. 对象实例何时被 ...

  8. java jvm对象_Java对象在JVM中长啥样

    前言 Java 是门面向对象的开发语言,那么我们自己编写的 Java 类生成的对象是什么样的?它肯定保存在虚拟机的内存中,但它以怎样的结构来保存的呢?带着疑问往下看看. 关于Klass Java 层的 ...

  9. java流对象_Java对象流的使用

    为了让对象持久化(把对象存储到本地),可以使用java的对象流处理对象,把对象的内容写到本地存储的文件中,也可以从本地文件中读取出来.也就是常说的序列化和反序列化 主要用到了ObjectInputSt ...

最新文章

  1. python3.8安装教程-二、Python2.7的安装并与Python3.8共存
  2. Python 中的 if __name__ == __main__ 该如何理解
  3. pikachu漏洞靶机之xss漏洞post提交方式
  4. Maven resource标签
  5. 两个实用的Python的装饰器
  6. 华为Mate 20 X 5G版本月起全球开卖:国内上市的首款5G手机
  7. html5转换成mp4视频,HTML5的canvas动画转视频MP4
  8. 基于BERT进行商品标题实体识别,很详细~
  9. 用css实现文本不换行切超出限制时显示省略号(小tips)
  10. 如何利用极域电子教室软件漏洞干翻所有机房
  11. C#正则表达式提取txt小说目录
  12. IDEA插件修改class文件
  13. Windows窗口固定工具
  14. Java基础知识点梳理
  15. Boost Asio介绍
  16. 女性bmi计算器JAVA代码_简单的BMI计算器
  17. 【Unity】如何使用MD5加密方式传递资料
  18. 判断用户flash是否安装了flash以及flash的版本
  19. idea如何查看已安装的插件
  20. itemarray的意思

热门文章

  1. 高情商的孩子是这样的
  2. perl正则表达式-1
  3. SAP FI/CO 知识 浓缩版
  4. Matlab——数值计算——单个代数方程 代数方程组
  5. Flask实战2问答平台-问答详情完成
  6. 进制转换 D进制的 A + B
  7. csp php,CSP学习笔记(持续学习更新)
  8. asp自动生成html文件的方法
  9. 什么是ActiveX插件
  10. 刚毕业的我,参与了一场大厂之间的争夺之战