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数据的主要内容,如果未能解决你的问题,请参考以下文章

JDBC 复习3 存取Oracle大数据 clob blob

OLEDB存取BLOB型数据

java大对象存取的简单实现的代码

mysql存取blob类型数据

使用ADO实现BLOB数据的存取 -- ADO开发实践之二

java String类型转换为Blob类型