mybaits有三种常见的批量插入方式:
-
反复执行单条插入语句
-
xml拼接sql
-
批处理执行
第一种,相当于循环里面反复执行同一条sql语句,当插入的数据量小的时候没啥问题,但是数量超过上千条的时候就效率非常的低。
第二种,不推荐,因为当数量少的时候批量插入没问题,但是当数据量超过500条,或者更多的是时候就直接报错!使用时有大段的xml和sql语句要写,很容易出错,工作效率很低。更关键点是,虽然效率尚可,但是真正需要效率的时候你挂了,要你何用?
第三种,推荐。当批量插入数据量大的时候推荐使用此方法。效率高,使用起来也比较方便。
批处理写法列子:
@Service
public class ItemService {
@Autowired
private ItemMapper itemMapper;
@Autowired
private SqlSessionFactory sqlSessionFactory;
//批处理
@Transactional
public void add(List<Item> itemList) {
SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH,false);
ItemMapper mapper = session.getMapper(ItemMapper.class);
for (int i = 0; i < itemList.size(); i+