【发布时间】:2020-10-01 23:07:10
【问题描述】:
我的批处理作业中有一个步骤,我只想用来从表中删除行。
步骤如下:
@Bean
public Step step2(StepBuilderFactory factory,
PurgeAggBalanceWriter writer,
DataSource dataSource,
PlatformTransactionManager platformTransactionManager){
return stepBuilderFactory.get("step2")
.transactionManager(platformTransactionManager)
.<Assessment,Assessment>chunk(10)
.reader(getReader(dataSource, READER_QUERY2, "AggBalanceMapper", new AggBalanceMapper()))
.writer(writer)
.build();
}
我正在使用这个带有 jdcb 模板的 writer 类来运行删除语句:
public class PurgeAggBalanceWriter implements ItemWriter<Assessment> {
private JdbcTemplate jdbcTemplate;
private static final String DELETE_QUERY = "DELETE FROM TABLE WHERE COLUMN = 'TEST'";
public PurgeAggBalanceWriter(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
@Override
public void write(List<? extends Assessment> list) {
jdbcTemplate.update(DELETE_QUERY);
}
该步骤成功完成,但我不明白为什么需要 ItemReader,因为当我尝试从步骤 2 中删除 .reader() 时它指出。
有没有办法避免使用读取器/映射器而只使用写入器,因为我所要做的就是运行删除查询?
【问题讨论】:
标签: spring-batch