上一篇:Oracle中进行对含有Blob的数据进行Update操作
BLOB类型数据存取
在往Oracle数据库里面存Blob数据时,出现了如下的报错:
ORA-01461:仅能绑定要插入 LONG 列的 LONG 值
原因在于使用 utl_raw.cast_to_raw函数转 Blob数据大小不能超过 VARCHAR(4000)
网上基本的我都看了,但是没有能解决我这个问题的。只能找找公司大佬。
这里采用的解决方式是,直接把String转Byte数组然后直接存Blob,不用转了。
-
步骤一:修改JavaBean
首先在 JavaBean里面创一个新的字段 类型是 Byte数组,方便存取
//名字随便取了,其它字段这里就不放了 private byte aByte[];
-
步骤二:修改Service层代码
我们这里需要存的是Content,前端给的是String,我们转成Byte数组可以直接往Blob类型里面存
byte[] gbks = itemPlan.getContent().getBytes("UTF-8"); itemPlan.setAByte(gbks);
-
步骤三:修改xml
原来我们是这么写的
CONTENT = utl_raw.cast_to_raw(#{content,jdbcType=String})
现在直接存Byte数组就不用这个函数转了
<if test="content != null"> CONTENT = #{aByte}, </if>
取也一样
- Service
- xml