MyBatis一个映射发送多条SQL遇到的问题
Posted chenloveslife
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis一个映射发送多条SQL遇到的问题相关的知识,希望对你有一定的参考价值。
在做批量更新的时候,我们可以知道经常是用mybatis动态sql拼接多条sql语句,如:
<update id="alterStudentDormBatch" parameterType="Map">
<foreach collection="stuDormMap" index="stuId" item="newDorm" separator=";">
UPDATE student
<set>
stu_dorm=#{newDorm}
</set>
WHERE stu_id=#{stuId}
</foreach>
</update>
然而却一直报错,sql语句显然没有问题,在调试的时候发现第一个map传给数据库没有问题,而后面的map都没有传入,怀疑是数据库的只接受了第一个update的sql语句。
后来发现,原来mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上* &allowMultiQueries=true *即可,即可一次性发送多个sql语句(batch)。
以上是批量更新的问题,其实还可以再优化,通过case...when...then..来拼接一条sql发送。
以上是关于MyBatis一个映射发送多条SQL遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章
mybatis的mapper文件中的一个标签是否可以写多条SQL语句?是否存在事物?
mysql+mybatis 在mybatis一个标签中,执行多条sql语句
mybatis的mapper文件中的一个标签是否可以写多条SQL语句?是否存在事物?