java+mybatis循环生成insert语句,一次性统一提交,大批量数据效率高


同种方式适用update批量操作,与单条操作相比效率提高了三分之二。

此方式需要注意的是:不要一次性提交太多条数据,拼接后的sql过长,可能会导致语句无法执行。

insert、update语句就是常规单条操作写法。

 SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
            ResearchLogisticsMapper rMapper = sqlSession.getMapper(ResearchLogisticsMapper.class);
            String biaoshi = logid;
        //数据处理
            List dataList = data(str, caseNo, path, request, biaoshi);
       //每2000条提交一次
            List> dataLists = ListUtils.partition(dataList, 2000);
            try {
                int i = 0;
                for (int h = 0; h < dataLists.size(); h++) {
                    List l = dataLists.get(h);
                    for (ResearchLogistics r : l) {
                        i = i + rMapper.batchInsertLogistics(r);
                    }
                    sqlSession.commit();
                }
            } catch (Exception e) {
                e.printStackTrace();
                vo.setCode("500");
                vo.setMessage("数据插入异常!");
                return vo;
            }