一个简单的问题

tandy 2020-01-12 04:56:56
使用 mybatis 数据库在做 1000 条数据以内的 添加、删除、修改操作,以下两种方式性能差别大吗?

第一种直接在 service 中使用 for 循环执行命令。

for (Record record: recordList) {
recordMapper.update(record);
}



第二种在 mapper.xml 中 使用 foreach 拼接命令

<update id="updateByList">
<foreach collection="recordList" item="record" separator=";" close=";">
update record_table
set field = field + 1
where id = #{record.id}
</foreach>
</update>


...全文
183 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
CS_草祭先生 2020-01-15
  • 打赏
  • 举报
回复
这就要看你循环的时候是否启用事物了。 如果启用事物进行批量提交,那其实性能都差不多。 如果不启用事物,每次循环都提交一次,那性能差别就很大。
米斯特谭i 2020-01-15
  • 打赏
  • 举报
回复
上面写错了..... separator=","
米斯特谭i 2020-01-15
  • 打赏
  • 举报
回复
引用 1 楼 迷途的码农 的回复:
大的很,第一种连续访问数据库1000次,第二种,访问数据库一次,你说呢
在spring里面是一次,是同一个事务,只是执行的语句条数多,估计没什么差别; update record_table set field = field + 1 where id in <foreach collection="recordList" item="record" open="(" separator=";" close=")"> #{record.id} </foreach> 这样差别才大
迷途的码农 2020-01-14
  • 打赏
  • 举报
回复
大的很,第一种连续访问数据库1000次,第二种,访问数据库一次,你说呢

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧