mybatis foreach循环插入数据时,直接将sql循环变成一个sql,如果数据量非常大插入效率指数级变低。将长度超过200的list拆分后分多次插入反而能提升效率(主要针对使用mybatisPlus的saveBatch方法的优化)。代码如下:
逻辑层调用
insertBatch(list, 200);
调用具体实现
public int insertBatch(List<BizImg> list, int size) {
int i = 0;
if(CollectionUtils.isNotEmpty(list)){
List<List<BizImg>> listList = Lists.partition(list, size);
for(List<BizImg> oneList : listList){
i += baseMapper.insertBatch(oneList);
}
}
return i;
}
mapper.java
int insertBatch(@Param(value = "list") List<BizImg> list);
mapper.xml
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
insert into biz_img
(id, biz_id