在Spring批处理xml编写中,我们可以为特定的记录数编写复杂的xml吗

问题描述

我必须设计一个 spring 批处理作业,它从数据库中读取(假设 JdbcCursorItemReader)并将数据写入 XML(复杂的 xml,如下所示)。 我有以下疑问。 一种)。 XML 不应超过 8k 条记录。如果有更多记录,则需要编写一个新的 XML。 例如 从数据库提取了 10K 条记录。 REQ_1.xml -> 8k 记录 REQ_2.xml -> 2k 条记录

b)。如何在为两个 xml 编写 XML 时动态附加 Header 块(标题摘要)。

提前致谢。

xml结构如下

<?xml version="1.0" encoding="UTF-8"?>
<faxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ST_BD0.xsd">
    <header>
        <extsysname>CU</extsysname>
        <datpost>2013-04-20</datpost>
    </header>
    <summary>
        <countdr>4000</countdr>
        <countcr>4000</countcr>
        <sumdr>1600000.00</sumdr>
        <sumcr>1600000.00</sumcr>
    </summary>
    <txnlist>
        <txndata>
            <debit>
                <accountno>6000000000029</accountno>
                <amount>400.00</amount>
            </debit>
            <credit>
                <accountno>022222222222222</accountno>
                <amount>400.00</amount>
            </credit>
        </txndata>
        <txndata>
            <debit>
                <accountno>6000000000029</accountno>
                <amount>400.00</amount>
            </debit>
            <credit>
                <accountno>022222222222222</accountno>
                <amount>400.00</amount>
            </credit>
        </txndata>
    </txnlist>
</faxml>

解决方法

您可以为此使用 MultiResourceItemWriter 并将 itemCountLimitPerResource 设置为 8000。您还可以使用自定义 { 将后缀自定义为 _1_2 等{1}}。