把生命浪费在美好事物上2018-06-27 18:33@Repository("batchExecutorDaoImpl")
public class BatchExecutorDaoImpl extends BaseDaoImpl {
@Transactional(value = "txManager", rollbackFor = Exception.class)
public <T> void batch(List<T> dataList, int batchSize, final SingleProcessor<T> processor) {
final SqlSession session = getGenericSqlSessionFactory().openSession(ExecutorType.BATCH);
ListSplitUtil.split(dataList, batchSize, new ListSplitUtil.Processer<T>() {
@Override
public void process(List<T> pageIdList) {
for (T data : pageIdList) {
processor.process(session, data);
}
session.commit();
}
});
}
public static interface SingleProcessor<T> {
public void process(SqlSession sqlSession, T data);
}
}
@Component
public class BatchExecutor4MapperManager {
@Resource(name = "oracleSqlSessionFactory")
private SqlSessionFactory sqlSessionFactory;
public interface SingleProcessor<T, M> {
void process(M mapper, T data);
}
@Transactional(value = "txManager", rollbackFor = Exception.class)
public <T, M> void doBatch(List<T> dataList, final Class<M> cls,
final SingleProcessor<T, M> processor) {
final SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
final M mapper = sqlSession.getMapper(cls);
ListSplitUtil.split(dataList, 100, new ListSplitUtil.Processer<T>() {
@Override
public void process(List<T> pageDataList) {
for (T data : pageDataList) {
processor.process(mapper, data);
}
sqlSession.commit();
}
});
}
}
本文来自网易实践者社区,经作者张晓单授权发布。