2个不同的读者可以在同一步骤中填写项目

时间:2019-07-14 22:09:26

标签: spring spring-batch

我有这种情况。我有一个包含某些信息的csv文件,我必须使用数据库表寄存器来完成此信息,并用这些信息编写一个新文件。

我猜我应该使用MultipleReader实现,一个实现读取我的文件,另一个实现读取数据库(类似于以下示例:https://bigzidane.wordpress.com/2016/09/15/spring-batch-multiple-sources-as-input/),但是我需要通过条件来查询与当前项目相关的内容正在处理。

无论如何,如果可能,我需要在我的reader2中配置一个查询数据,并在我的reader1中获取信息。我该怎么做?

这是我的问题的小履历:

b1 <- list(
  "math",
  "write",
  0.6439442,
  c(0.2939780, 0.8416635),
  setNames(c(0.5517048, 0.7156524), c("2.5%","97.5%"))
)

b2 <- list(
  "math",
  "read",
  0.663126,
  c(0.3242639, 0.8511580),
  setNames(c(0.5716105, 0.7384209), c("2.5%","97.5%"))
)

b3 <- list(
  "science",
  "write",
  0.5812035,
  c(0.1995946, 0.8097306),
  setNames(c(0.4791782, 0.6721795), c("2.5%","97.5%"))
)

对不起,我的英语。任何指向文章或文档的链接都是很好的。

1 个答案:

答案 0 :(得分:0)

这是一种常见的模式,称为“驾驶查询模式”,在参考文档的Common patterns部分中进行了描述。

您可以使用FlatFileItemReader来读取输入文件,并可以使用项目处理器来查询数据库中的当前项目,并使用其他数据对其进行充实。

另一个想法是将平面文件加载到数据库的临时表中,并使用数据库项目读取器来联接数据。

希望这会有所帮助。