- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码
@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/
我是 Spring Batch 的新手,目前正在使用 MultiResourceItemReader 读取多个文件,并使用 CompositeItemWriter 将其写入数据库的不同表中,每个文件包
我有以下代码 @Bean public JdbcBatchItemWriter writer1() { return new JdbcBatchItemWriterBuilder()
我需要从数据库中读取数据,然后生成一个 XLSX 文件并更新数据库中的数据。 读者部分没有问题。对于 writer 部分,我最终创建了一个 CompositeItemWriter,它由第一个生成 XL
在批处理作业步骤配置中,我计划在 writer 中执行 2 次查询,第 1 次查询是更新表 A 中的记录,然后第 2 次查询是再次在表 A 中插入新记录。 到目前为止,我认为 CompositeIte
我正在扩展这个 How does Spring Batch CompositeItemWriter manage transaction for delegate writers?这里的问题: 在我的
我创建了 3 个文件编写器,它们创建了 3 个本地文件。但读取的所有信息都以相同的方式进入每个文件。我正在尝试设置一些逻辑,以便只有被调用的项目才会进入其正确的文件。例如:创建文件A、文件B、文件C。
以下是将在作业中初始化的步骤代码。 @Bean public Step stepOne() { return stepBuilderFactory.get("stepOne")
我是一名优秀的程序员,十分优秀!