直接上结论:
方法一、通过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://51itzy.com/kjqy/115792.html