美文网首页
Mybatis批量更新(MySQL)

Mybatis批量更新(MySQL)

作者: 瓜尔佳_半阙 | 来源:发表于2018-08-15 19:14 被阅读20次

    MySQL批量update

    参数为List<T>

    <update id="batchUpdateEmployerMissionTypeInfoByOrder" parameterType="java.util.List">
            update employer_mission_type_manage
            <trim prefix="set" suffixOverrides=",">
                <trim prefix="type_order=case" suffix="end,">
                    <foreach collection="list" item="item" index="index">
                        <if test="item.typeId!=null">
                            when type_id=#{item.typeId} then #{item.typeOrder}
                        </if>
                    </foreach>
                </trim>
            </trim>
            where type_id in
            <foreach collection="list" item="item" separator="," open="(" close=")">
                #{item.typeId,jdbcType=INTEGER}
            </foreach>
        </update>
    

    这只是mysql批量更新的一种写法,上述sql也可以写成直接将 update 语句放到<foreach>块中去执行的方式,这种方式会产生多条 update 语句。有的文章说多条update语句会比本文开始的那种方式快,当然也有人说本文一开始的写法好,我也不知道哪个好,只是因为这个方法写着麻烦,所以我记录一下。
    在本文中的update语句的where条件里,也可以写成如下形式:

            where 
            <foreach collection="list" item="item" separator="or">
                type_id = #{item.typeId,jdbcType=INTEGER}
            </foreach>
    

    这种用 or 的写法据说会影响性能,所以本文采用的是 in 的写法,感兴趣的话可以自行百度,有很多重复的文章。
    不扯了,就这样。

    参考:https://blog.csdn.net/xyjawq1/article/details/74129316/

    相关文章

      网友评论

          本文标题:Mybatis批量更新(MySQL)

          本文链接:https://www.haomeiwen.com/subject/zgnwbftx.html