<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
需要在資料庫表中定義一個blob型別的欄位
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的資料進行操作
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; } }
呼叫二進位制工具類來轉換資料然後進行存取就可以了。
測試功能
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中,BLOB是一個二進位制大型物件,是一個可以儲存大量資料的容器,它能容納不同大小的資料。
BLOB型別實際是個型別系列(TinyBlob、Blob、MediumBlob、LongBlob),除了在儲存的最大資訊量上不同外,他們是等同的。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45