使用Mybatis批量更新的一个小问题
批量更新的方式有很多种,例如update case when,foreach update等,今天在使用其中一种foreach update时一直报SQL语法错误,看了半天没看出哪里有问题:
1 | <update id="updateBatch" parameterType="list"> |
非常简单的update SQL,通过Mybatis foreach 生成多个update SQL同时执行,但是运行时一直报:
1 | ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update test |
看到这个错误下意识的认为肯定是sql哪里写的不对有语法错误,可是检查了半天没发现问题,而且将报错的sql 通过navicat运行也可以通过。
后来查到如果批量执行语句需要将database connection url中加上如下参数:
1 | allowMultiQueries=true |
完整的url例如:
1 | jdbc:mysql://x.x.x.x:3306/xxxx?allowMultiQueries=true&autoReconnect=true&useUnicode=true&characterset=utf8mb4 |
不得不说MySQL报错信息实在是太模糊了。😓
使用Mybatis批量更新的一个小问题