MyBatis连mysql批量更新异常

来源:8-7 列表分页插件开发

慕用2942571

2017-11-22

写回答

4回答

橘子阿茶

2018-03-02


增加以下配置即可解决

<bean id="wall-config" class="com.alibaba.druid.wall.WallConfig">
   <!-- 允许一次执行多条 -->
   <property name="multiStatementAllow" value="true"/>
</bean>


1
0

Jimin

2017-11-22

你好,可以通过以下几个方式去处理

1、下载的代码里语法稍微有点问题,这个许多学员看到后都自己解决了,这里单独说一下。SysDeptMapper.xml里batchUpdateLevel里foreach定义的变量和使用时不一致

<update id="batchUpdateLevel" parameterType="map">
     <foreach collection="sysDeptList" item="sysDept" separator=";">
           UPDATE sys_dept
           SET level = #{sysDept.level}
           WHERE id = #{sysDept.id}
      </foreach>
</update>

2、这个没问题后,检查一下durid的配置,applicationContext.xml里

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
   <property name="driverClassName" value="${db.driverClassName}" />
   <property name="url" value="${db.url}" />
   <property name="username" value="${db.username}" />
   <property name="password" value="${db.password}" />
   <property name="initialSize" value="3" />
   <property name="minIdle" value="3" />
   <property name="maxActive" value="20" />
   <property name="maxWait" value="60000" />
   <property name="filters" value="stat,wall" />
</bean>

可以尝试把 <property name="filters" value="stat,wall" /> 中wall 移除看批量更新是否ok,这个配置兼容性不是特别好

3、如果异常依旧存在,那么可以修改一下数据库连接串,setting.properties里

db.url=jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8

在这个连接串后面再拼上一段:&allowMultiQueries=true

mysql版本比较低时,需要通过这个参数显式声明支持批量操作


1
0

香烟弥漫

2018-04-24

谢谢老师,棒棒哒

0
0

慕用2942571

提问者

2017-11-22

语法没有问题

0
0

Java开发企业级权限管理系统

源于企业真实Java项目,涉及大量高级技巧,覆盖权限管理开发技术

2224 学习 · 1334 问题

查看课程