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