我需要写一份工作,我必须在那里读两次数据库。
第一个查询只返回一条记录,我需要将此记录作为平面文件的标题发送 第二个查询返回一组我需要在同一个平面文件中写入的记录。
我尝试为它创建一个复合编写器,并在其中我提供了两个 flatFileItemWriter ,并为这两个flatFileItemWriters设置了相同的资源名称。但这会导致错误 资源已存在 。
任何人都可以告诉我应该遵循的方法。
提前致谢。
答案 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>