gpt4 book ai didi

java - 无法使用 CompositeItemWriter : ItemWriter is not a ItemStream

转载 作者:行者123 更新时间:2023-12-02 00:36:04 24 4
gpt4 key购买 nike

我有以下代码

@Bean
public JdbcBatchItemWriter<QuotationDto> writer1() {
return new JdbcBatchItemWriterBuilder<QuotationDto>()
.itemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>())
.sql("INSERT INTO ...")
.dataSource(dataSource)
.build();
}

@Bean
public JdbcBatchItemWriter<QuotationDto> writer2() {
return new JdbcBatchItemWriterBuilder<QuotationDto>()
.itemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>())
.sql("INSERT INTO ...")
.dataSource(dataSource)
.build();
}

@Bean
public CompositeItemWriter<QuotationDto> compositeItemWriter() {
CompositeItemWriter writer = new CompositeItemWriter();
writer.setDelegates(Arrays.asList(writer1(), writer2()));
return writer;
}

@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.<QuotationDto, QuotationDto>chunk(5)
.reader(reader())
.processor(processor())
.writer(compositeItemWriter())
.stream(writer1())
.stream(writer2())
.build();
}

我在将 writer1 设置为流时遇到 IntelliJ 错误,因为 id 没有实现 ItemStream。

我做错了什么?有人有解决方案吗?我没有找到太多关于基于java的复合编写器配置的信息。

最佳答案

JdbcBatchItemWriter 未实现 ItemStream,因此它不能在面向 block 的步骤中用作流。

如果您想要组合两个 JDBC 项目编写器,您可以创建一个委托(delegate)给 JdbcTemplate 的自定义项目编写器。这是一个简单的例子:

class MyItemWriter implements ItemWriter<QuotationDto> {

private JdbcTemplate jdbcTemplate;

public MyItemWriter(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}

@Override
public void write(List<? extends QuotationDto> items) throws Exception {
for (QuotationDto dto : items) {
// use jdbcTemplate to batch insert items.
// can do multiple inserts here, they will be part of
// the same transaction driven by Spring Batch
}
}
}

关于java - 无法使用 CompositeItemWriter : ItemWriter is not a ItemStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57972839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com