批量更新和批量删除自行扩展
@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);
try{
batchAdd(session)
} catch(Exception e) {
logger.error("保存失败", e);
sqlSession.rollback();
} finally {
sqlSession.clearCache();
sqlSession.close();
}
}
private void batchAdd(SqlSession session) {
ItemMapper mapper = session.getMapper(ItemMapper.class);
for (int i = 0; i < itemList.size(); i++) {
mapper.insertSelective(itemList.get(i));
if(i%1000==999){//每1000条提交一次防止内存溢出
session.commit();
session.clearCache();
}
}
session.commit();
session.clearCache();
}
}
参考: https://mp.weixin.qq.com/s/hoy3gE8ALw1OGl_uon_D_g