Mit JdbcTemplate mit Benannten Parametern in spring batch
ich versuche ein parameter übergeben werden, um meine Anfrage in spring batch. Ich habe beschlossen, ein tasklet und verwenden JdbcTemplate wie folgt ...
public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext)
throws EpsilonBatchBusinessException {
LOGGER.debug("Enter execute.");
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.query(queryString,
new PreparedStatementSetter() {
public void setValues(PreparedStatement preparedStatement) throws SQLException {
preparedStatement.setInt(1, runNumber);
}
},
rowMapper);
LOGGER.debug("Exit execute.");
return RepeatStatus.FINISHED;
}
Also bin Injektion dieser bean eine dataSource, queryString, rowMapper Objekt, und der parameter (runNumber) .. Das tasklet aufgerufen wird, in einem Schritt um eine Liste zu erstellen. Ich in der Regel übergeben die Zeile mapper JdbcCursorItemReader spring-bean und würde nicht schreiben, ein tasklet, aber mein query string muss einen parameter daher Schreibe diesen tasklet. Bin nur nicht sicher, ob das tasklet wird den trick tun als mit JdbcCursorItemReader? Ihre Eingabe wird geschätzt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine bessere option wäre, um die
JdbcCursorItemReader
und schreiben Sie eine benutzerdefinierte PreparedStatementSetter.Den
PreparedStatementSetter
Schnittstelle ist sehr einfach; so ziemlich alle der code, den Sie hatte schreiben müssen, ist unten. Sobald der setter geschrieben wird, ist alles was Sie tun müssen ist, konfigurieren Sie es als eine neue bean mit derrunNumber
Wert injiziert in die config, und dann zu injizieren, die Bohne in eineJdbcCursorItemReader
. Dies ermöglicht Ihnen die Verwendung aller üblichenItemReader
s undItemWriter
s anstatt zur Umsetzung alles von hand in eineTasklet
.