Mybatis实现Oracle批量更新sql语句解决方案

大家好,我是李子。

前两天遇到了使用Mybatis批量处理sql语句,因对其不熟悉,被困扰两天,百度了很多方法,但还是毫无头绪,但最后还是解决了,特此献上解决方法。

Mybatis批量更新的时候报错:

java.sql.SQLException: sql injection violation, multi-statement not allow : update XXX(table)

Mybatis实现Oracle批量更新sql语句解决方案_第1张图片

 经过百度很多方法都是在数据库连接的地方增加必须配置:&allowMultiQueries=true(貌似只针对于mysql,对于Oracle不适用);看到很多调用foreach导致失败的解决方法,在节点上增加begin,end,但我这里并没有用到,辗转了一天,灵感袭来,在原理上调用foreach和自己写多个update的语句原理上应该是一样的,于是在mapper.xml中update节点下的开头和结尾处增加了begin和end 

随着有迎来来了新的问题:

PLS-00103: 出现符号 "end-of-file"在需要下列之一时: ;  符号 ";" 被替换为 "end-of-file" 后继续。

Mybatis实现Oracle批量更新sql语句解决方案_第2张图片 

报错原因:

因为两个update语句之间需要使用;隔开,end结尾处也必须使用;来结束。 

Mybatis实现Oracle批量更新sql语句解决方案_第3张图片

以上方法完美解决了李子遇到的Mybatis实现Oracle批量更新sql语句的问题,仅供参考!

李子记录工作期间遇到的问题及解决办法,与大家分析,希望可以帮到大家!(李子能力有限,暂只是提供解决方法,哈哈)

你可能感兴趣的:(java,Mybatis,Oracle)