直接上结论:
方法一、通过java for循环
调用insert(单个对象),由于每次插入都会进行一次create SqlSession -> commit操作,因此数据量大时禁用,在插入条数少时可用,逻辑简单,使用方便。
方法二、通过xml拼接sql foreach
效率高,但条数过长会报错,插入条数长时可用,需要预估条数,在进行跑批。
方法三、批处理
java中自建sqlSession ->循环insert-> commit,避免每次循环操作都进行commit,同方法二插入条数长时可用,需要预估条数,在进行跑批。
mysql:
sqlserver:
JAVA将数据再次分流的一种方式:
/**
* 数据分批
* @param oldList 需要分批的集合
* @param count 分批次数
* @param <T>
* @return
*/
public static <T> List<List<T>> groupByListCount(List<T> oldList, int count) {
if (count < 1) {
throw new IllegalArgumentException("num < 1");
}
List<List<T>> result = new ArrayList<List<T>>(count);
if (oldList.size() < count) {
result.add(oldList);
return result;
}
int size = oldList.size() / count;
int p = oldList.size() % count;
int idx = 0;
for (int i = 0; i < count; i++) {
int endIndex = idx + size;
if (i < p) {
endIndex++;
}
endIndex = Math.min(endIndex, oldList.size());
List<T> list = oldList.subList(idx, endIndex);
idx = endIndex;
result.add(list);
}
return result;
}
参考文献:
mysql foreach 批量操作_kai666ling的博客-CSDN博客_foreach批量查询
mysql批量插入效率探究_superfengwu的博客-CSDN博客_mysql 批量插入效率
sqlserver [实验]mybatis批量插入方式的比较 – 简书
今天的文章批量处理数据的三种方式是_常用的数据处理软件有分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/77243.html