MybatisPlus|Mybatis-Plus实现存储以及读取Java对象

数据库的准备 - MySQL 准备一个字段存储Java对象序列化后的字段
因为不能直接用字符串,所以用成了字节数组(Java)
所以各位可以根据自己的需要选择,以下的几个类型,作为参考

TinyBlob:最大 255 Blob:最大 65KB MediumBlob:最大 16MB LongBlob:最大 4GB

我自己的是Blob
Java代码的准备 需要的知识存储,IO以及Mybatis Plus的基础操作
这里用的是SpringBoot + MybatisPlus组合
当然使用Spring + Spring mvc也是同理
1.准备两个实体类
// 数据库的实体 class First { private int id; // 存储序列化后的对象 private byte[] bit; }// 存入的对象 - 需要序列化的对象 class Second implements Serializable { // 确保唯一即可 private static final long serialVersionUID = 1L; ..... }

2.Controller层 - 存储/写操作
// 存储序列化后的字节 byte[] bit; // 操作字节数组的IO ByteArrayOutputStream byt = new ByteArrayOutputStream(); // 操作对象的IO ObjectOutputStream obj = new ObjectOutputStream(byt); // 将需要序列化的对象写入 obj.writeObject(new Second()); // 转成byte数组 bit = byt.toByteArray(); First first = new First(); first.setBit(bit); // 利用sql语句进行增加/修改操作 xxxMapper.xxxx(first);

3.Dao层
update tableName set bit = #{bit,typeHandler=org.apache.ibatis.type.BlobTypeHandler} where id = 1

解释:,typeHandler=org.apache.ibatis.type.BlobTypeHandler
因为byte[]不能直接存入为blob所以,需要处理器做相关的处理
至此存入Java对象已完成
4.Controller层 - 取出/读操作
// Mybatisplus的自带方法 First first = xxxxMapper.selectById(1); // 字节流,将数据库存储读出来 ByteArrayInputStream bis = new ByteArrayInputStream(first .getBit()); // 将获得到的字节流对象转换成对象流 ObjectInputStream objectInputStream=new ObjectInputStream(bis); // 成功复原 Second second = (Second) objectInputStream.readObject();

【MybatisPlus|Mybatis-Plus实现存储以及读取Java对象】自此分享结束,希望能对你们有帮助,谢谢

    推荐阅读