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
之前用其子项目丰富每个项目
在我的批处理中,来自 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
之前用其子项目丰富每个项目