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语句?是否存在事物?

mybatis的mapper文件中的一个标签是否可以写多条SQL语句?是否存在事物?

mybatis学习记录------2

MyBatis动态SQL