Java存取blob数据
Posted bGpi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java存取blob数据相关的知识,希望对你有一定的参考价值。
背景
在项目开发中,经常会遇到需要存储不定长的对象数组,如上传一组图片、添加一道题目等等,这个时候在数据库中存储一般需要用到存储长度较大的blob类型,在java的实体类中对应blob类型的是byte数组。
思路
为了存储的数据格式兼容性更高,我采用的是借助json的方式来处理,即存储前,我将对象整理为json数组,然后通过jsonArray转为byte数组存储到数据库中,读取时,将byte数组再反转为jsonArry即可。这样做的好处是,json是跨平台的,java存的这部分数据其他平台也能够处理,且java在处理过程中不需要知道这个对象的内部结构,这一点是非常重要的,尤其是在byte数组转对象的过程中,如果存的是一个java对象,那么必须要知道该对象的具体结构才能反转出来,反转过程非常复杂,这样该对象也不易再进行扩展,json则可以随时扩展,改变其中的结构。
方法类
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
public class JsonArrUtils {
/**
* json数组转byte []
*/
public static byte[] toByteArray(JSONArray obj) {
return obj.toString().getBytes();
}
/**
* byte []转json数组
*/
public static JSONArray toJsonArray(byte [] bytes) {
try {
return JSON.parseArray(new String(bytes));
}
catch (Exception e) {
return null;
}
}
}
操作
//存对象
entity.setValue(JsonArrUtils.toByteArray(dto.getValue()));
//取对象
JsonArrUtils.toJsonArray(entity.getValue());
以上是关于Java存取blob数据的主要内容,如果未能解决你的问题,请参考以下文章