Spring バッチ アプリケーションで一度にデータベースから 50 レコードを読み取り、その 50 レコードをプロセッサに送信してからライターに送信する必要があります。
誰かがこれを行う方法を教えてください。
JdbcPagingItemReader を使用して、pageSize を 50 に設定して 50 レコードを読み取ろうとしましたが、rowMapper、プロセッサ、およびライターは、50 レコードを取得する代わりに、一度に 1 つのレコードを受け取ります。
プロセッサとライターが一度に 1 つのレコードを受け取るのではなく、dto で 50 レコードを取得するようにするにはどうすればよいですか?
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;
}