JpaItemReader 处理具有特定值的每个元素

JpaItemReader process each element with a specific value

在我的批处理中,来自 sql 数据库的数据必须 selected 并导出为 xml 文件。因此,我必须 select 一个父元素的所有数据,才能将父节点和所有子节点导出为 xml。

我有一个 table 像下面的例子:

|key|parent|child|
------------------
|yxc|par001|chi01|
|xcv|par001|chi02|
|cvb|par002|chi03|
|vbn|par003|chi04|
|bnm|par003|chi05|

现在我想 select 每个父元素及其子元素。这些应该一个接一个地处理。对于上面的例子 table 它应该是:par001 -> par002 -> par003。将导出的 xml 应如下所示:

<par001>
    <chi01></chi01>
    <chi02></chi02>
</par001>
<par002>
    <chi03></chi03>
</par002>
...

如何 select 数据以便我可以依次处理每个父元素? JpaItemReader 可以吗?

我会将问题分解为两个步骤:

  • 第 1 步执行 select distinct(parent) from your_table 并将结果存储在作业执行上下文中(结果是字符串或 ID 的列表,而不是整个项目,因此可以将它们按顺序存储在执行上下文中与下一步分享)
  • 第 2 步从执行上下文中读取父 ID,并使用项 reader 对其进行迭代。项目处理器会在将丰富的项目传递给 StaxEventItemWriter
  • 之前用其子项目丰富每个项目