SqlSession用于操作mybatis底层的类:
可以实现对一个数组按数量提交存储:commit
也可以有回滚操作:
SqlSession类结构:
eg:
SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);
PropagandaCabinetMapper mapper = sqlSession.getMapper(PropagandaCabinetMapper.class);
List<String> cabinetIds = request.getCabinetIds();
try {
cabinetIds.forEach(item->{
PropagandaCabinet propagandaCabinet =new PropagandaCabinet();
propagandaCabinet.setPropagandaId(propaganda.getPropagandaId());
propagandaCabinet.setCabinetId(item);
mapper.batchInsertPropagandaCabinet(propagandaCabinet);
if ((1 + cabinetIds.indexOf(item)) % 1000 == 0 || cabinetIds.indexOf(item) == cabinetIds.size() -1){
sqlSession.commit();//每1000个提交一次
sqlSession.clearCache();//清理缓存,防止溢出
}
});
} catch (Exception e) {
sqlSession.rollback();
e.printStackTrace();
} finally {
sqlSession.close();
}