- 数据库默认每一条指令是一个事务,所以直接执行等于说是O(n)次的开启事务,事务提交。
- 批处理时,把每次提交的信息都缓存到了本地,及时提交防止OOM
@Resource
PlagiarismAuditMapper plagiarismAuditMapper;
@Resource
private SqlSessionFactory sqlSessionFactory;
private final static int CUR_MAX_CAPACITY = 500;
@Override
public void batchInsert(List<PlagiarismAudit> records) {
SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
PlagiarismAuditMapper plagiarismAuditMapper = session.getMapper(PlagiarismAuditMapper.class);
int flag = 0;
for (PlagiarismAudit record : records) {
plagiarismAuditMapper.insertSelective(record);
flag += 1;
if (flag > CUR_MAX_CAPACITY) {
session.commit();
session.clearCache();
flag = 0;
}
}
session.commit();
session.clearCache();
}