首页 > 基础资料 博客日记
java实现批量插入数据
2023-07-24 17:03:01基础资料围观245次
文章java实现批量插入数据分享给大家,欢迎收藏Java资料网,专注分享技术知识
日常工作或者学习中,可能会遇到批量插入数据的需求,一般情况下数据量少的时候,我们会直接调用批量接口插入数据即可,当数据量特别大时,可能由于数据库限制,插入的数据最多不能超过100条(假如限制100条),就算是数据库支持一次性插入千条也会耗内存,如果使用一条一条的插入数据库中的话,会特别耗时间,大概是正常批量插入数据所耗时间的三倍,所以我们就会用到分批插入数据。
- 思路
- 我们将数据查出,放到list里面,然后将数据循环,每次循环到100条,就调用批量插入接口。
代码实现:
@Override
public void selectData(String statisDate, String eventCode) {
List<FilterLogEntity> filterLogEntity = filterlogMapper.selectData(statisDate, eventCode);
//存储插入数据(100条数据)
List<DataLog> dataLogList = new ArrayList<>();
int nums = 100;
for (int i = 0; i < filterLogEntity.size(); i++) {
dataLogList.add(filterLogEntity.get(i));
if (i > 0 && i % nums == 0 || i == filterLogEntity.size() - 1) {
filterOraMapper.insertData(dataLogList);
//每次插入完数据,将上次存储的100条数据清空
dataLogList.clear();
}
}
}
xml中sql,此处是给oracle数据库中插入数据
<insert id="insertData">
insert into 表名
(
a,
b,
c
)
<foreach collection="dataLogList" item="item" separator="UNION ALL">
select
#{item.a},
#{item.b},
#{item.c}
from dual
</foreach>
</insert>
给其他数据库插入数据:
<insert id="insertList" parameterType="java.util.List">
insert into 表名 (a,b,c)
VALUES
<foreach collection="dataLogList" index="index" item="item" separator="," >
(
#{item.a},
#{item.b},
#{item.c}
)
</foreach>
</insert>
后续新增:
给oracle数据库插入数据,也可以用这种方法
```xml
begin
<foreach collection="list" item="item" index="index">
insert into masakr.TB_HUMAN_SOCIAL_SECURITY@LINK33
(date_time, province, city, pr_name, pr_lingering_num, city_name, city_lingering_num,
gender_name,gender_num)
values(
#{item.dateTime},
#{item.province},
#{item.city},
#{item.prName},
#{item.prLingeringNum},
#{item.cityName},
#{item.cityLingeringNum},
#{item.genderName},
#{item.genderNum}
);
</foreach>
end;
文章来源:https://blog.csdn.net/qq_58545721/article/details/129791645
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: