Я хочу, чтобы мое пакетное приложение Spring считывало 50 записей из базы данных за один раз, а затем отправляло эти 50 записей на процессор, а затем на запись.Весенняя серия читает несколько записей и обрабатывает несколько записей
Может кто-нибудь рассказать мне, как это можно сделать.
Я попытался использовать JdbcPagingItemReader и установил pageSize to 50, который считывает 50 записей, но rowMapper, процессор и писатель получают одну запись за раз, вместо того, чтобы получать 50 записей.
Как сделать так, чтобы процессор и писатель получали запись 50 в формате dto вместо приема одной записи за раз?
XML весна конфигурации
<job id="indexJob" job-repository="jobRepository">
<step id="job1">
<tasklet transaction-manager="transactionManager">
<chunk reader="reader" processor="processor" writer="writer" commit-interval="1"/>
</tasklet>
</step>
</job>
Конфигурация весной Java
@Bean
@Scope("step")
public JdbcPagingItemReader reader() throws Exception {
MySqlPagingQueryProvider provider = new MySqlPagingQueryProvider();
provider.setSelectClause("select id");
provider.setFromClause("from BATCH_CUSTOMER");
provider.setSortKey("id");
JdbcPagingItemReader reader = new JdbcPagingItemReader();
reader.setDataSource(this.dataSource());
reader.setQueryProvider(provider);
reader.setPageSize(50);
reader.setRowMapper(new MyRowMapper());
reader.afterPropertiesSet();
int counter = 0;
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
Object pageCredit = new Object();
while (pageCredit != null) {
pageCredit = reader.read();
System.out.println("pageCredit:" + pageCredit);
counter++;
}
reader.close();
return reader;
}
Это не сработало. MyRowMapper, процессор и писатель по-прежнему получают по одной записи за раз. – hajime
http://forum.springsource.org/showthread.php?136209-JdbcPagingItemReader-not-passing-all-page-records-to-the-processor&p=442538#post442538 – hajime