动态查询的JdbcPagingItemReader并行处理

时间:2014-12-22 13:36:31

标签: spring spring-batch

我有一个方法,它使用JdbcPagingItemReader从动态查询中读取1M行。

JdbcPagingItemReader itemReader = new JdbcPagingItemReader();
itemReader.setDataSource(dataSource);

String hardsql = "Dynamic SQL string";
SqlPagingQueryProviderFactoryBean qu = new SqlPagingQueryProviderFactoryBean();
qu.setDatabaseType("Oracle");
qu.setSelectClause(StringUtils.substringBefore(hardsql, "FROM"));
qu.setFromClause(StringUtils.substringAfter(hardsql, "FROM"));

itemReader.setQueryProvider((PagingQueryProvider) qu.getObject());
itemReader.setRowMapper(new CustomDataMapper());
itemReader.setPageSize(500);
itemReader.setFetchSize(500);

ExecutionContext executionContext = new ExecutionContext();
itemReader.open(executionContext);

// Do further processing and create a list of objects from itemReader.read();

itemReader.close();

是否有任何方式/工作示例可用,我可以通过该示例并行化进程(例如,每个线程并行处理10K行,最后生成可以返回的对象列表)。 我使用的是oracle 11g,春季批量版本2.2.4。发布。

提前致谢..

0 个答案:

没有答案