1.controller代码
@RequestMapping("/testInsert")
public String testInsert(Integer sum){
testService.testInsert(sum);
return "发送成功";
}
2.service代码
@Override
public 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秒