使用ibatis读取OracelClob类型存储的Base64字符串并转成图片

本文介绍如何使用Ibatis从Oracle数据库中读取BLOB类型数据,并将其转换为字符串显示。此外,还提供了将Base64字符串转换为图片的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.ibatis获取数据信息

    数据库中有些字段因为存储的数据量大,而使用特殊格式进行存储,常用的数据类型为BLOB和CLOB格式。
         BLOB(binary large object)和CLOB(Character Large Object)都是数据库中的一种保存文件所使用的类型。都用来存储大对象,BLOB是二进制大对象,是存储二进制文件的容器,典型的BLOB是一张图片或一个声音文件。CLOB使用CHAR来保存数据,常用来保存XML文档。
  本次项目中的数据库(Oracle)使用的是BLOB来存储大量文本和数字信息。项目使用Ibatis来实现对BLOB的读取。需求是将BLOB数据读出来显示为字符串.按照一般的读字符串的写法做时会报错,显示为无法转换,那么就需要进行显示的配置转换类型.
        数据库中字段类型为BLOB.
        主要是Ibatis的配置:

	<resultMap class="java.util.HashMap" id="tempClob">
      		<result property="CZRKXP" column="CZRKXP" jdbcType="CLOB" javaType="java.lang.String"/>
	</resultMap>
	<select id="getIDCARD_INFO" parameterClass="map" resultMap="tempClob" cacheModel="cacheIDCARD_INFO">
			SELECT CZRKXP FROM IDCARD_INFO  WHERE FID= #FID#
	</select>

2.转换Base64字符串为图片

字节数组字符串进行Base64解码并生成图片 :

    /** 
     * @Descriptionmap 对字节数组字符串进行Base64解码并生成图片 
     * @author  
     * @Date 2016-12-06 
     * @param base64 图片Base64数据 
     * @param path 图片路径 
     * @return 
     */  
    public static boolean base64ToImage(String base64, String path) {// 对字节数组字符串进行Base64解码并生成图片  
        if (base64 == null){ // 图像数据为空  
            return false;  
        }  
        BASE64Decoder decoder = new BASE64Decoder();  
        try {  
            // Base64解码  
            byte[] bytes = decoder.decodeBuffer(base64);  
            for (int i = 0; i < bytes.length; ++i) {  
                if (bytes[i] < 0) {// 调整异常数据  
                    bytes[i] += 256;  
                }  
            }  
            // 生成jpeg图片  
            OutputStream out = new FileOutputStream(path);  
            out.write(bytes);  
            out.flush();  
            out.close();  
            return true;  
        } catch (Exception e) {  
            return false;  
        }  
    }  
图片文件转化为字节数组字符 :

    /** 
     * @Descriptionmap 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 
     * @author 
     * @Date  
     * @param path 图片路径 
     * @return 
     */  
    public static String imageToBase64(String path) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理  
        byte[] data = null;  
        // 读取图片字节数组  
        try {  
            InputStream in = new FileInputStream(path);  
            data = new byte[in.available()];  
            in.read(data);  
            in.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        // 对字节数组Base64编码  
        BASE64Encoder encoder = new BASE64Encoder();  
        return encoder.encode(data);// 返回Base64编码过的字节数组字符串  
    }  

参考: https://blog.youkuaiyun.com/wanghuan203/article/details/8442433

        https://blog.youkuaiyun.com/sinat_26987533/article/details/53579270


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值