使用mybatis向oracle数据库插入数据异常
遇到了使用mybatis向oracle數據庫插入數據異常的問題,
具體的報錯如下:org.springframework.jdbc.UncategorizedSQLException:
### Error updating database.? Cause: java.sql.SQLException: ORA-01461: 僅能綁定要插入 LONG 列的 LONG 值
mybatis的腳本如下:
???? <insert id="insertInfos" parameterType="java.util.List">
?? ??? ?INSERT INTO
?? ??? ?INFO(
?? ??? ?RECORD_ID,
?? ??? ?CONTENT
?? ??? ?)
?? ??? ?<foreach close=")" collection="list" item="item" index="index"
?? ??? ??? ?open="(" separator="union">
?? ??? ??? ?select
?? ??? ??? ?#{item.recordId,jdbcType=VARCHAR},
?? ??? ??? ?#{item.content,jdbcType=VARCHAR}
?? ??? ??? ?from dual
?? ??? ?</foreach>
?? ?</insert>
?
后面做了很多測試分析,確認是因為參數List過長,導致此問題,后面修改mybatis的腳本,
在最外層使用BEGIN、END包裹,然后使用foreach循環并在循環完成具體的數據庫字段映射;
如下:
??? <insert id="insertInfos" parameterType="java.util.List">
?? ??? ?BEGIN
?? ??? ?<foreach close="" collection="list" item="item" index="index"
?? ??? ??? ?open="" separator=";">
?? ??? ??? ?INSERT INTO
?? ??? ??? ?INFO(
?? ??? ??? ?RECORD_ID,
?? ??? ??? ?REQ_CONTENT
?? ??? ??? ?)
?? ??? ??? ?VALUES(
?? ??? ??? ?#{item.recordId,jdbcType=VARCHAR},
?? ??? ??? ?#{item.rspContent,jdbcType=VARCHAR}
?? ??? ??? ?)
?? ??? ?</foreach>
?? ??? ?;END;
?? ?</insert>
?
注意在后面可以正確使用的腳本中,separator=";"? 這里的分號不可以去掉的!
轉載于:https://www.cnblogs.com/widget90/p/9075735.html
總結
以上是生活随笔為你收集整理的使用mybatis向oracle数据库插入数据异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以太坊、Hyperledger Fabr
- 下一篇: agc015D A or...or B