今天用MyBatis批量插入数据到Oracle中,其中有字段的类型为Clob,出现错误:ORA-01461:仅能绑定要插入LONG列的LONG值
其中content字段在数据库中是Clob类型。
Xml中SQL语句如下:
<insert id="batchInsert" parameterType="java.util.List">
insert into tableName (ID, LAST_MODIFIED, content)
<foreach collection="list" item="item" index="index" close=")" open="(" separator="union">
select #{item.id},to_date(#{item.lastModified},'YYYY-MM-DD HH24:MI:SS') ,#{item.content} from dual
</foreach>
</insert>
其中content字段在数据库中是Clob类型。
在网上查了很久,有可能问题是出现在当从dual中取数据时,会将clob对象的字段转为Long型
最后的解决方法用到了Begin和end语法
<insert id="batchInsert" parameterType="java.util.List">
begin
<foreach collection="list" item="item" index="index" separator=";">
insert into tableName(ID, LAST_MODIFIED, content)
values( #{item.id},to_date(#{item.lastModified},'YYYY-MM-DD HH24:MI:SS'),#{item.content})
</foreach>
;end;
</insert>
成功插入了多条包含Clob的数据