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 id="xxxx" parameterType="First">
	update tableName set bit = #{bit,typeHandler=org.apache.ibatis.type.BlobTypeHandler} where id = 1
update>

解释:,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,序列化,IO流,java,spring,boot,mysql,数据库)