1.controller代码
@RequestMapping("/testInsert")public String testInsert(Integer sum){testService.testInsert(sum);return "发送成功";}
2.service代码
@Overridepublic void testInsert(Integer sum) {long start = System.currentTimeMillis();List<TestDTO> list = new ArrayList<>();for (int i = 0; i < sum; i++) {TestDTO testDTO = new TestDTO();testDTO.setId(i);testDTO.setAgentId(2L*i);list.add(testDTO);if (i % 300 == 0){testMapper.testInsert(list);list.clear();}}if (ToolUtil.isNotEmpty(list)){testMapper.testInsert(list);}long end = System.currentTimeMillis();System.out.println("时间:"+(end - start)/1000);}
3.mapper代码
void testInsert(@Param("list") List<TestDTO> list);
4.xml代码
<insert id="testInsert">INSERT INTO tb_agent_test(id, agent_id)VALUES<foreach collection="list" item="testDTO" separator=",">(#{testDTO.id},#{testDTO.agentId})</foreach></insert>
5.输出结果
测试数据十万条
每次100条,插入时间总共消耗95秒
每次200条,插入时间总共消耗51秒
每次300条,插入时间总共消耗35秒
每次400条,插入时间总共消耗27秒
每次500条,插入时间总共消耗23秒
每次600条,插入时间总共消耗18秒
每次700条,插入时间总共消耗17秒
每次800条,插入时间总共消耗14秒
每次900条,插入时间总共消耗14秒
每次1000条,插入时间总共消耗12秒
每次1100条,插入时间总共消耗12秒
每次1200条,插入时间总共消耗11秒
每次1300条,插入时间总共消耗10秒
每次1400条,插入时间总共消耗10秒
每次1500条,插入时间总共消耗9秒
每次2000条,插入时间总共消耗7秒
每次3000条,插入时间总共消耗7秒