Spring Batch中动态的ItemWriters数

时间:2015-02-12 06:38:57

标签: spring-batch

我目前正在处理像ItemReader这样的需求,对于每个记录,我们将得到一个包含逗号分隔值的字符串,例如:“ABC,DEF,GHI”或“ABC,DEF,GHI,JKL”,我们需要解析将该字符串分成单独的标记并将其写入表中的新行。

在第一种情况下,记录将是:

  

row1:key1,ABC

     

row2:key1,DEF

     

row3:key1,GHI

在第二种情况下,记录将是:

  

row1:key1,ABC

     

row2:key1,DEF

     

row3:key1,GHI

     

row4:key1,JKL

因此,在这个要求中,我们需要动态地写入记录取决于String中的令牌数量。我们可以在这里使用compositeItemWriter吗?

1 个答案:

答案 0 :(得分:1)

您可以,但这不是我推荐的方法。如果我正确理解了您的要求,那么您有ItemReader个读取n个字段以逗号分隔,并且该记录中的每个字段将最终作为数据库表中的新记录。< / p>

如果上述内容正确无误,我建议您使用ItemProcessor将读入的记录细分为正确的项目数。 ItemProcessor<FullRecord, List<SmallRecords>会返回一个列表,然后您在自定义的ItemWriter中循环播放JdbcBatchItemWriter。由于ItemWriter将收到列表列表,因此您需要包装JdbcBatchItemWriter并循环遍历父列表,将每个子列表传递给JdbcBatchItemWriter