文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mysql存储二进制对象数据问题怎么解决

2023-07-05 12:33

关注

这篇“Mysql存储二进制对象数据问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mysql存储二进制对象数据问题怎么解决”文章吧。

Mysql存储二进制对象数据

首先数据库存储一个Object对象

需要在数据库表中定义一个blob类型的字段

Mysql存储二进制对象数据问题怎么解决

与数据库对应的实体类

Mysql存储二进制对象数据问题怎么解决

编写一个操作二进制的工具类

import java.io.*; public class BlobUtil {         public static byte[] setObject(Object object) {        ByteArrayOutputStream baos = null;        ObjectOutputStream out = null;        try {            baos = new ByteArrayOutputStream();            out = new ObjectOutputStream(baos);            out.writeObject(object);        } catch (Exception e) {            e.printStackTrace();        } finally {            if (out != null) {                try {                    out.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            if (baos != null) {                try {                    baos.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return baos.toByteArray();    }         public static Object getObject(byte[] bytes) {        Object obj = null;        ByteArrayInputStream bais = null;        ObjectInputStream in = null;        try {            bais = new ByteArrayInputStream(bytes);            in = new ObjectInputStream(bais);            obj = in.readObject();        } catch (Exception e) {            e.printStackTrace();        } finally {            if (in != null) {                try {                    in.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            if (bais != null) {                try {                    bais.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return obj;    }}

需要转换为byte[]的对象必须实现序列化和生成一个序列化ID,生成一个序列化ID是为了解决类当中一但有修改,反序列化时序列化ID就会对应不上,如下图:

类中如果有其他类为变量也需要实现序列化,否则从数据库中取出数据然后反序列化成Object对象的时候会直接报错

对user的数据进行操作

import java.io.Serializable; public class UserVO implements Serializable {     private static final long serialVersionUID = 1L;     private String userId;     private String userName;     private String password;     public String getUserId() {        return userId;    }     public void setUserId(String userId) {        this.userId = userId;    }     public String getUserName() {        return userName;    }     public void setUserName(String userName) {        this.userName = userName;    }     public String getPassword() {        return password;    }     public void setPassword(String password) {        this.password = password;    }}

调用二进制工具类来转换数据然后进行存取就可以了。

测试功能

public class TestMain {     public static void main(String[] args) {        UserVO user = new UserVO();        user.setUserId("123456");        user.setUserName("张三");        byte[] dataValue = BlobUtil.setObject(user);        System.out.println("=====对象转换成blob类型数据====="+Arrays.toString(dataValue));        UserVO userVO = (UserVO) BlobUtil.getObject(dataValue);        System.out.println("=====blob类型数据转换成对象====="+ JSONObject.toJSONString(userVO));    }}

打印输出

=====对象转换成blob类型数据=====[-84, -19, 0, 5, 115, 114, 0, 53, 99, 111, 109, 46, 100, 111, 108, 112, 104, 105, 110, 46, 109, 111, 100, 117, 108, 101, 115, 46, 116, 109, 115, 46, 100, 111, 109, 97, 105, 110, 46, 99, 117, 115, 116, 111, 109, 101, 114, 115, 101, 114, 118, 105, 99, 101, 46, 85, 115, 101, 114, 86, 79, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 76, 0, 8, 112, 97, 115, 115, 119, 111, 114, 100, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 83, 116, 114, 105, 110, 103, 59, 76, 0, 6, 117, 115, 101, 114, 73, 100, 113, 0, 126, 0, 1, 76, 0, 8, 117, 115, 101, 114, 78, 97, 109, 101, 113, 0, 126, 0, 1, 120, 112, 112, 116, 0, 6, 49, 50, 51, 52, 53, 54, 116, 0, 6, -27, -68, -96, -28, -72, -119]
=====blob类型数据转换成对象====={"userId":"123456","userName":"张三"}

Mysql存储二进制大型对象类型对照

MySql MediumBlob——MySql的Bolb四种类型

MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。

BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob),除了在存储的最大信息量上不同外,他们是等同的。

Mysql存储二进制对象数据问题怎么解决

以上就是关于“Mysql存储二进制对象数据问题怎么解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯