您现在的位置是:首页 > 技术人生 > 后端技术后端技术

mybatis批量更新方式及性能对比

高晓波2021-11-16【后端技术】人已围观

简介mybatis的两种批量更新方式

1、mybatis批量更新方式


方式一:java代码内循环,示例如下:
            for (DeviceTypeResult.DeviceInfo deviceInfo:devices) {
                deviceService.updateType(deviceInfo);
            }

方式二:利用mybatis循环拼接一条批量更新sql,一次性批量更新,示例如下:

Dao接口:
void updateTypeBatch(@Param("deviceInfos") List<DeviceTypeResult.DeviceInfo> deviceInfos);

xml文件:
<update id="updateTypeBatch">
        update zhhw_device
        <trim prefix="set" suffixOverrides=",">
            <trim prefix="type =case" suffix="end,">
                <foreach collection="deviceInfos" item="item" index="index">
                    when id=#{item.did} then #{item.type}
                </foreach>
            </trim>
        </trim>
        where id in
        <foreach collection="deviceInfos" index="index" item="item" separator="," open="(" close=")">
            #{item.did}
        </foreach>
</update>


2、两种方式性能对比

实验中,我们批量更新500多条数据,采用分页的方式,每页100更新100条,以下是两种方式的耗时:

1. for循环批量更新耗时:


2. 单条sql批量更新耗时:


可以明显的看到,100条数据的批量更新,两种方式效率差了80倍左右。

Tags:mybatis

很赞哦! ()

文章评论