我能够从多个表中读取并使用spring batch的复合itemReader将它们写入单个xml。当我这样做时,批处理一次从每个表中读取一行并将其写入xml,然后继续读取每个表中的下一行。
但是,我的要求是读取整个表,将其写入xml然后继续下一个表,完全读取并写入相同的xml。
我必须以这种方式阅读四个表并将它们全部写入一个xml。
有什么方法可以在弹簧片中执行此操作吗? 任何帮助表示赞赏。
答案 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;
}
}