myBatis的mapper映射文件之批量处理

mybatis常见批量处理

在开发当中,可能经常会遇到批量处理这种情况,一般都再在java层面进行,
其本质是节省数据库连接打开关闭的的次数,占用更少的运行内存。

mybatis批量插入

<insert id="saveFeeRuleList" useGeneratedKeys="true" parameterType="java.util.List">
        <selectKey resultType="java.lang.String" keyProperty="id" order="AFTER">
            SELECT
            LAST_INSERT_ID()
    </selectKey>
    INSERT INTO t_product_fee_rule(
        <include refid="Base_Column_List"/>
    )
    VALUES
    <foreach collection="list" item="item" index="index" separator=",">
        (
            #{item.id},#{item.productId},
            #{item.feeCode},#{item.feeValue},
            #{item.remarks}
        )
    </foreach>
</insert>

mybatis批量删除

<delete id="removeProductAgent" parameterType="java.util.HashMap">
    <foreach collection="maps.agentIds" item="item" index="index" open="" close="" separator=";">
        DELETE FROM t_product_agent
        WHERE 1 = 1
        AND product_id = #{maps.productId}
        AND agent_id = #{item}
    </foreach>
</delete>

此处的maps接口中的@Param值对应,属于自定义变量。

void removeProductAgent(@Param("maps")Map<String, Object> map);

mybatis批量修改

<update id="saveUpdateFeeRuleList" parameterType="java.util.List">
    <foreach collection="list" item="item" index="index" open="" close="" separator=";">
        UPDATE t_product_fee_rule
        SET
    fee_value = #{item.feeValue},
    remarks = #{item.remarks}
        WHERE id = #{item.id}
    </foreach> </update>

你可能感兴趣的:(mybatis)