日常工作或者學(xué)習(xí)中,可能會遇到批量插入數(shù)據(jù)的需求,一般情況下數(shù)據(jù)量少的時(shí)候,我們會直接調(diào)用批量接口插入數(shù)據(jù)即可,當(dāng)數(shù)據(jù)量特別大時(shí),可能由于數(shù)據(jù)庫限制,插入的數(shù)據(jù)最多不能超過100條(假如限制100條),就算是數(shù)據(jù)庫支持一次性插入千條也會耗內(nèi)存,如果使用一條一條的插入數(shù)據(jù)庫中的話,會特別耗時(shí)間,大概是正常批量插入數(shù)據(jù)所耗時(shí)間的三倍,所以我們就會用到分批插入數(shù)據(jù)。
- 思路
- 我們將數(shù)據(jù)查出,放到list里面,然后將數(shù)據(jù)循環(huán),每次循環(huán)到100條,就調(diào)用批量插入接口。
代碼實(shí)現(xiàn):
@Override
public void selectData(String statisDate, String eventCode) {
List<FilterLogEntity> filterLogEntity = filterlogMapper.selectData(statisDate, eventCode);
//存儲插入數(shù)據(jù)(100條數(shù)據(jù))
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);
//每次插入完數(shù)據(jù),將上次存儲的100條數(shù)據(jù)清空
dataLogList.clear();
}
}
}
xml中sql,此處是給oracle數(shù)據(jù)庫中插入數(shù)據(jù)文章來源:http://www.zghlxwxcb.cn/news/detail-509851.html
<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>
給其他數(shù)據(jù)庫插入數(shù)據(jù):文章來源地址http://www.zghlxwxcb.cn/news/detail-509851.html
<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>
后續(xù)新增:
給oracle數(shù)據(jù)庫插入數(shù)據(jù),也可以用這種方法
```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;
到了這里,關(guān)于java實(shí)現(xiàn)批量插入數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!