弹簧读取完整表然后移动到下一个表

时间:2017-11-08 09:21:42

标签: xml spring-batch batch-processing

我能够从多个表中读取并使用spring batch的复合itemReader将它们写入单个xml。当我这样做时,批处理一次从每个表中读取一行并将其写入xml,然后继续读取每个表中的下一行。

但是,我的要求是读取整个表,将其写入xml然后继续下一个表,完全读取并写入相同的xml。

我必须以这种方式阅读四个表并将它们全部写入一个xml。

有什么方法可以在弹簧片中执行此操作吗? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可以创建自己的ItemReader,将整个表视为一条记录。因此,在第一次调用read()时,它将返回所有行的列表。

您可以将原始ItemReader用作代理人,也可以自己在自己的阅读器中进行查询。

这会在Step,Processor和Writer上将步骤的数据类型从T更改为List,因此您的Writer必须能够编写“多行记录”。

public class DumpReader implements ItemReader<List<Row>> {
  private ItemReader<Row> delegate;  

  public List<Row> read() throws Exception {
    List<Row> data = new ArrayList<>();
    for (Row row = null; (row = this.delegate.read()) != null;) {
      data.add(row);
    }

    return data;
  }
}