Spring批量基于订单对象写入多个表

时间:2018-03-05 16:34:03

标签: java spring spring-batch

我正在使用订单xml并使用spring批处理将它们转换为订单对象。订单对象的结构如下所示:

public class Order{

prop1
prop2
---
propn
List<Item> items;
List<Shipping> shipping;
List<Billing> billing;
----
}

现在prop1 - popn将转到订购表,但是商品,运费和结算信息将转到不同的表格,为简单起见,我们假设它们是一对多的关系。目前,我正在解析xml并填充订单bean并使用JdbcBatchItemWriter将某个日期推送到订购表。在文档中,我看到compositeWriter,但没有看到任何好的例子。我确定有人已经实现了这种解决方案,所以想要对此有所了解。如果我通过一个简单的例子获得有关如何实现这一目标的信息,那就太棒了。

1 个答案:

答案 0 :(得分:1)

ComposedItemWriter传递传递给ItemWriter的列表中的每个项目,并将其传递给每个委托ItemWriter实施列表。因此,您可以按如下方式对其进行配置(每个writer*()方法都指向您需要写入的表的编写器):

@Bean
public CompositeItemWriter<Order> orderCompositeItemWriter() {
    List<ItemWriter<Order>> delegates = new ArrayList<Order>();
    delegates.add(writer1());
    delegates.add(writer2());
    delegates.add(writer3());

    return new CompositeItemWriterBuilder<Order>()
            .delegates(delegates)
            .build();
}