Sop*_*kar 6 spring-batch spring-boot
以下是将在作业中初始化的步骤代码。
@Bean
public Step stepOne() {
return stepBuilderFactory.get("stepOne")
.<EmployeeDTO, EmployeeDTO> chunk(1)
.reader(readerOne())
.processor(processorOne())
.writer(compositeWriter())
.build();
}
Run Code Online (Sandbox Code Playgroud)
下面是用于写入数据的复合写入器。
@Bean
public CompositeItemWriter<EmployeeDTO> compositeWriter(){
return new CompositeWriter();
}
public class CompositeWriter extends CompositeItemWriter<EmployeeDTO> {
@Autowired
private DataSource dataSource;
List<EmployeeDTO> insert;
List<EmployeeDTO> update;
@Override
public void write(List<? extends EmployeeDTO> arg0) throws Exception {
CompositeItemWriter<EmployeeDTO> compositeItemWriter = new CompositeItemWriter<>();
compositeItemWriter.setDelegates(Arrays.asList(insertW(),updateW()));
}
private JdbcBatchItemWriter<EmployeeDTO> insertW() throws Exception{
JdbcBatchItemWriter<EmployeeDTO> batchItemWriter = new JdbcBatchItemWriter<>();
batchItemWriter.setDataSource(dataSource);
batchItemWriter.setSql("");
batchItemWriter.write(insert);
return batchItemWriter;
}
private JdbcBatchItemWriter<EmployeeDTO> updateW() throws Exception{
JdbcBatchItemWriter<EmployeeDTO> batchItemWriter = new JdbcBatchItemWriter<>();
batchItemWriter.setDataSource(dataSource);
batchItemWriter.setSql("");
batchItemWriter.write(update);
return batchItemWriter;
}
}
Run Code Online (Sandbox Code Playgroud)
Mah*_*ine 11
您的配置有几个问题:
write在 writer (batchItemWriter.write(insert)和batchItemWriter.write(update))上调用该方法,Spring Batch 会这样做。CompositeItemWriter. 您可以在其中创建一个注册委托编写者的实例。以下是如何处理您的情况:
@Bean
public JdbcBatchItemWriter<EmployeeDTO> insertW() throws Exception{
JdbcBatchItemWriter<EmployeeDTO> batchItemWriter = new JdbcBatchItemWriter<>();
batchItemWriter.setDataSource(dataSource);
batchItemWriter.setSql("");
return batchItemWriter;
}
@Bean
public JdbcBatchItemWriter<EmployeeDTO> updateW() throws Exception{
JdbcBatchItemWriter<EmployeeDTO> batchItemWriter = new JdbcBatchItemWriter<>();
batchItemWriter.setDataSource(dataSource);
batchItemWriter.setSql("");
return batchItemWriter;
}
Run Code Online (Sandbox Code Playgroud)
CompositeItemWriter@Bean
public CompositeItemWriter<EmployeeDTO> compositeItemWriter() {
CompositeItemWriter<EmployeeDTO> compositeItemWriter = new CompositeItemWriter<>();
compositeItemWriter.setDelegates(Arrays.asList(insertW(), updateW()));
return compositeItemWriter;
}
Run Code Online (Sandbox Code Playgroud)
@Bean
public Step stepOne() {
return stepBuilderFactory.get("stepOne")
.<EmployeeDTO, EmployeeDTO> chunk(1)
.reader(readerOne())
.processor(processorOne())
.writer(compositeItemWriter())
.stream(insertW())
.stream(updateW())
.build();
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
6639 次 |
| 最近记录: |