美文网首页
05_Mybatis的批量更新与插入

05_Mybatis的批量更新与插入

作者: 明天你好向前奔跑 | 来源:发表于2018-01-24 21:21 被阅读0次

@Author Jacky Wang
在使用Mybatis进行批量插入与更新的时候,遍历一条条的操作效率太低,因此采用mybatis的动态sql实现批量操作。

1. mybatis批量插入

示例如下:

这里有个注意点:
    括号的分隔不能在<foreach>标签里面使用close与open使用。

<insert id="batchAddTagBindingRecord" parameterType="java.util.List" useGeneratedKeys="true">
    insert t_tag_binding (goods_id,status,epc,tid,op_scene,origin_id,create_date,creater,client_id)values
    <foreach collection="list" item="item" index="index" separator=",">
        ( #{item.goodsId,jdbcType=BIGINT},
        #{item.status,jdbcType=VARCHAR},
        #{item.epc,jdbcType=VARCHAR},#{item.tid,jdbcType=VARCHAR},
        #{item.opScene,jdbcType=VARCHAR},#{item.originId,jdbcType=BIGINT},
        #{item.createDate,jdbcType=TIMESTAMP},#{item.creater,jdbcType=BIGINT}, #{item.clientId,jdbcType=BIGINT}
        )
    </foreach>
</insert>

2. mybatis批量更新

示例如下:

MySQL没有提供直接的方法来实现批量更新,但可以使用case when语法来实现这个功能。
注意:最外层trim不能包where条件

<update id="batchUpdateTagStatus" parameterType="java.util.List">
    update t_tag
    <trim prefix="set" suffixOverrides=",">
        <trim prefix="goods_id = case" suffix="end,">
            <foreach collection="list" item="item" index="index">
                when epc=#{item.epc} then #{item.goodsId}
            </foreach>
        </trim>
        <trim prefix="status = case" suffix="end,">
            <foreach collection="list" item="item" index="index">
                <if test="item.status!=null">
                    when epc=#{item.epc} then #{item.status}
                </if>
            </foreach>
        </trim>
        <trim prefix="last_update = case" suffix="end,">
            <foreach collection="list" item="item" index="index">
                <if test="item.lastUpdate!=null">
                    when epc=#{item.epc} then #{item.lastUpdate}
                </if>
            </foreach>
        </trim>
    </trim>
    where epc in
    <foreach collection="list" separator="," item="item" index="index" open="(" close=")">
        #{item.epc}
    </foreach>
</update>

相关文章

网友评论

      本文标题:05_Mybatis的批量更新与插入

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