I have a method which uses JdbcPagingItemReader to read 1M rows from a dynamic query.
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();
Is there any way/working example available, by which I can parallelize the process(e.g. each thread works on 10K rows parallely and finally resulting the list of objects which can be returned). I am using oracle 11g, spring batch version 2.2.4.Release.
Thanks in advance..