我有一个方法,它使用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。发布。
提前致谢..