大家好,我是李子。

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

Mybatis批量更新的时候报错:

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

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

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

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

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

PLS-00103: 出现符号 "end-of-file"在需要下列之一时: ; <an identifier> <a double-quoted delimited-identifier>符号 ";" 被替换为 "end-of-file" 后继续。

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

报错原因:

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

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

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

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

相关文章:

  • 2021-12-26
  • 2022-12-23
  • 2023-03-31
  • 2022-12-23
  • 2021-10-19
  • 2022-12-23
猜你喜欢
  • 2021-08-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-17
  • 2022-12-23
相关资源
相似解决方案