玩家必看科普!麻豆人人妻人人妻人人片AV,欧美老妇交乱视频在线观看,久久综合九色综合久99_知乎
<ruby id="fgcka"></ruby>
  • <progress id="fgcka"></progress>
    <tbody id="fgcka"></tbody>
    <dd id="fgcka"></dd>

    1. <dd id="fgcka"></dd>

      <em id="fgcka"></em>
        1. 系統城裝機大師 - 固鎮縣祥瑞電腦科技銷售部宣傳站!

          當前位置:首頁 > 數據庫 > Mysql > 詳細頁面

          Mysql存儲二進制對象數據問題

          時間:2023-03-15來源:系統城裝機大師作者:佚名

          Mysql存儲二進制對象數據

          首先數據庫存儲一個Object對象

          需要在數據庫表中定義一個blob類型的字段

          與數據庫對應的實體類

          編寫一個操作二進制的工具類

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          36
          37
          38
          39
          40
          41
          42
          43
          44
          45
          46
          47
          48
          49
          50
          51
          52
          53
          54
          55
          56
          57
          58
          59
          60
          61
          62
          63
          64
          65
          66
          67
          68
          69
          70
          71
          72
          73
          74
          75
          76
          import java.io.*;
            
          /**
           * byte[]類型操作類
           */
          public class BlobUtil {
            
              /**
               * 把object對象序列化為二進制字節數組
               * @param object
               * @return
               */
              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();
              }
            
              /**
               * 把二進制字節數組反序列化為object對象
               * object當中的每個javaBean對象都必須實現序列化
               * 最外層的類必須生成一個序列化ID
               * @param bytes
               * @return
               */
              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的數據進行操作

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          36
          37
          38
          39
          40
          41
          import java.io.Serializable;
            
          /**
           * @author
           * @description
           * @date
           */
          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;
              }
          }

          調用二進制工具類來轉換數據然后進行存取就可以了。

          測試功能

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          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),除了在存儲的最大信息量上不同外,他們是等同的。

          在這里插入圖片描述

          分享到:

          相關信息

          系統教程欄目

          欄目熱門教程

          人氣教程排行

          站長推薦

          熱門系統下載

          玩家必看科普!麻豆人人妻人人妻人人片AV,欧美老妇交乱视频在线观看,久久综合九色综合久99_知乎 人人玩人人添人人澡超碰偷拍 青春娱乐视频精品分类官网2 最好最新高清中文字幕 91国自产拍最新2018 欧美精品一区二区三区不卡网 深夜你懂得我的意思2021 宿舍NP乖把腿张开H 网恋奔现一天被要几次 为什么我越叫他越快 学渣各种各样的PLAY 英语课代表下面好软小说 亚洲国产综合在线区尤物 FREE性丰满HD性欧美 我年轻漂亮的继坶BD 最近中文字幕完整免费视频 啦啦啦免费视频卡一卡二 青柠视频在线观看大全 在线天堂WWW在线资源 亚洲国产日本韩国欧美MV 天天学习|久久久久久久精品国产亚洲87 国产K频道分享系统进入口 三个嘴都吃满了还塞满了 JAPONENSIS老师学生JAVAHBB 亚洲精品1卡2卡3卡4卡 樱花草在线社区WWW韩国 好涨水快流出来了快吃动视频 久久AV无码精品人妻出轨