代码拉取完成,页面将自动刷新
测试环境
mysql 5.7
系统 windows 内存16g
bathc是mybatis自带的一种方式,操作简单,整合spring后并不常用,需配置rewriteBatchedStatements=true
循环values是在xml中foreach
标签来拼接values
,比较方便,通用mapper也集成了该方案(主键必须自增)
jdbc是老牌工具了,功能齐全
循环update是在xml种foreach
标签来拼接sql,用;
隔开,需配置allowMultiQueries=true
case when then 其中when...then...是sql中的"switch" 语法
数量 | mybatis BATCH | 循环values新增 | jdbc实现批量新增 | mybatis BATCH更新 | 循环update(;隔开)更新 | case when 更新 | jdbc实现批量更新 |
---|---|---|---|---|---|---|---|
50 | 56ms | 58ms | 49ms | 1947ms | 1874ms | 432ms | 393ms |
500 | 359ms | 90ms | 142ms | 14292ms | 14963ms | 447ms | 302ms |
5w | 28256ms | 1059ms | 6319ms | - | - | 字符超长 | 9558ms |
10w | - | 3137ms | 12812ms | - | - | 字符超长 | 17570ms |
批量新增推荐
<insert id="batchInsertList">
insert into test_user(user_name,remark)
values
<foreach collection="userList" index="index" item="item"
separator=",">
(#{item.userName},#{item.remark})
</foreach>
</insert>
批量更新推荐case when then
,但要控制长度,分组处理,社会主义不能开倒车,jdbc就不推荐了,不过你大爷始终是你大爷
<update id="batchUpdateList">
update test_user
<trim prefix="set" suffixOverrides=",">
<trim prefix="remark =case" suffix="end,">
<foreach item="item" collection="userList">
when user_name = (#{item.userName})
then #{item.remark}
</foreach>
</trim>
</trim>
where user_name in
<foreach item="item" collection="userList" separator="," open="(" close=")">
#{item.userName}
</foreach>
</update>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。