//需要插入的总数量Integer allNumber =3000;Integer number =0;//每次循环最多生成数量Integer max =100;do{if(allNumber > max){
number = max;
allNumber -= max;}else{
number = allNumber;
allNumber =0;}//todo 执行插入逻辑List<T> list =newArrayList<T>();for(int i =0; i < number; i++){T t =newT();
list.add(t);}//执行批量插入sqlint insert = writeMapper.insertList(list);if(insert != number){//如果插入的总数不等于我们插入预期,回滚数据并返回错误信息TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();returnnewJSONResult(500,"请求失败请稍后再试");}//allNumber剩余总数小于1时结束循环}while(allNumber >1);
第二种方法:
/**
* 经实践,800一批插入相对较快,这个可以随便定义
*/privatestaticfinalint MAX_INSERT_NUMBER =800;publicstaticvoidmain(String[] args){//需要插入的集合List<T> list =newArrayList<T>();//需要插入总数int allNumber = list.size();//每次插入数量int insertNumber = MAX_INSERT_NUMBER;for(int i =0; i < allNumber; i += insertNumber){//作用为insertNumber最后没有800条数据则剩余几条newList中就装几条if(i + MAX_INSERT_NUMBER > allNumber){
insertNumber = allNumber - i;}List<T> insertList = list.subList(i, i + insertNumber);//批量插入int insert = wirterMapper.insertList(insertList);if(insert != number){//如果插入的总数不等于我们插入预期,回滚数据并返回错误信息TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();returnnewJSONResult(500,"请求失败请稍后再试");}}}
Integer allNumber =3000; Integer number = 0; //每次循环最多生成数量 Integer max = 100; do { if (allNumber > max) { number = max; allNumber -= max; } else { num