当前位置: 首页 > 知识库问答 >
问题:

Spring Batch-ItemReader在另一个项目阅读器或项目处理器中

洪研
2023-03-14

选项2:(a)创建内部带有SalesReader的DiscountReader(ItemReader方法中的ItemReader)-它为每个正在读取的DiscountObj调用SalesReader。(b)创建SalesWriter将SalesReader获取的日期写入数据库。

在任何情况下,由SalesReader执行的查询的参数都是动态的,因为它必须从当前的DiscountObJ中提取。这是仅有的两种方法还是有更好的html" target="_blank">方法?

如果我将SalesReader注入SalesProcessor/DiscountReader,则在用查询参数设置preparedstatementsetter之前调用open()方法。

共有1个答案

公西俊民
2023-03-14

尽可能地将阅读器、处理器和编写器分开:每个组件都有一个特定的工作,混合通常是一种糟糕的做法。
您的用例是一个常见的用例,如果我理解正确的话,您的困难与阅读器有关。
将其分为两个组件:

  • 读取器:使用一个基于discounty+sales表之间联接的基于SQL游标的读取器
  • 处理器:对于获取的每一条记录,使用DAO用额外的数据文件充实记录

只要您需要更多的数据操作,就添加更多的处理器,而编写应该很简单

 类似资料:
  • 每次作业运行时,都在从不断增长的现有表中读取数据。我正在寻找Spring batch中的选项,以便在每次运行调度作业时只查询新记录。 如果我读了50000条记录,下一个时间表应该从50001开始。 我的想法是将ItemReader读取的最后一条记录的id(整个读卡器输出的最后一条,而不是每个块的最后一条)保存在DB中,并在后续的作业计划中使用。我将从主表返回按id排序的数据。 我怎么知道作者最后的

  • 我们的SpringBatch作业只有一个步骤,包括ItemReader、ItemProcessor和ItemWriter。我们用不同的参数同时运行同一个作业。ItemReader是有状态的,因为它包含从中读取的输入流。 因此,我们不希望ItemReader的相同实例用于每个JobInstance(作业参数)调用。 我不太确定哪种是这种情况的最佳“范围界定”。 1) 该步骤是否应该以@JobScop

  • 以下是我的Spring批处理用例。 > 处理记录。 将处理过的记录逐一写入。 我很清楚第2步和第3步的内容,但不知道如何实现一个可以一次性读取所有记录的读卡器。如何将记录逐一传递给项目处理者/编写者?我应该使用tasklet而不是reader/writer吗?

  • 我是Spring批次的新手。我需要在spring批处理中实现的任务如下: 需要从数据库读取一些元数据。 基于此元数据,我需要读取一些文件。 经过一些处理后,需要将这些值从文件写入数据库。 我的查询如下: c.另外,基于某些条件,我可能需要调用第三组阅读器。如何在步骤中有条件地调用读取器? 谢谢你看了我的帖子。我知道它很长。非常感谢任何帮助。另外,我想一个示例代码片段会帮助我更好地理解这一点。:)

  • 我正在使用JpaPagingItemReaderBuilder查询一个DB,结果被插入到另一个DB中。 查询返回的结果没有任何问题,但我得到了一个错误与读取器的返回,在处理器中,您可以检查我的编码和错误下面。 有谁能给我一点启示吗?为什么我不能处理结果?

  • 我正在构建一个定制的Java库。我把我的大部分“重复”代码都保存在那里,比如文件处理、字符串处理等。每次我想使用它们时,我都必须将该类复制并粘贴到我正在进行的其他项目中。有没有办法让这个自定义库类成为“依赖项”?我在用我的智能手机。