如何使用Spring Batch将2个jdbc读取器的数据发送到一个平面文件

时间:2010-09-07 13:40:10

标签: spring-batch

我需要写一份工作,我必须在那里读两次数据库。

第一个查询只返回一条记录,我需要将此记录作为平面文件的标题发送 第二个查询返回一组我需要在同一个平面文件中写入的记录。

我尝试为它创建一个复合编写器,并在其中我提供了两个 flatFileItemWriter ,并为这两个flatFileItemWriters设置了相同的资源名称。但这会导致错误 资源已存在

任何人都可以告诉我应该遵循的方法。

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用FlatFileItemWriter写入两个不同的文件,然后在第3步中附加文件。

答案 1 :(得分:0)

编写你的bean,考虑你的第二个查询,它返回一组记录。 对于标题部分,您将一个FlatFileHeaderCallback作为属性提供给FlatFileItemWriter并在那里获取标题记录。

public class MyFileHeaderCallback implements FlatFileHeaderCallback {
    @Override
    public void writeHeader(Writer writer) throws IOException {
        writer.write("#I have this line from a query");
    }
}

<bean id="headerCallback" class="com.file.MyFileHeaderCallback" />

<bean id="productItemWriter" class="org.*.file.FlatFileItemWriter">
<property name="headerCallback" ref="headerCallback" />
<!-- other necessary methods for your Writer -->
</bean>