Mybaties批量更新一直报错,意思是在Mybaties的xml中执行sql的时候多了个“;”,因为在Mybaties的xml中在SQL语句的结尾是不能加上“;”的加上后就会报下面的错误。但是SQL有必须这样配置。
### Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
最后通过为foreach设置open和close属性来解决问题(),在这里设置两个标签如下:
让begin和end;包裹生成的SQL即可。注意如果数据库为Mysql还要在Mysql的配置连接后加上;allowMultiQueries=true表示一次可以项向数据库提交执行多个SQL。
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
整个Mybaties的批量新增SQL如下:
update DATA_TABLE where ID = #{item.id,jdbcType=VARCHAR} NAME = #{item.name, jdbcType=VARCHAR}, SHORT_NAME = #{item.shortName, jdbcType=VARCHAR}, CODE = #{item.code, jdbcType=VARCHAR},
执行结果:
BEGIN UPDATE DATA_TABLE SET NAME = ?, SHORT_NAME = ?, DEPT_CODE = ? WHERE ID = ? ; UPDATE DATA_TABLE SET NAME = ?, SHORT_NAME = ?, DEPT_CODE = ? WHERE ID = ? ; UPDATE DATA_TABLE SET NAME = ?, SHORT_NAME = ?, DEPT_CODE = ? WHERE ID = ? ;END ;