Spring Batch-另一个项目阅读器或ItemProcessor中的ItemReader



这是我的要求:创建一个批处理作业1.从折扣表中获取折扣计划的特定搜索评论2.对于第1步中获取的每个折扣计划, 获取适合折扣计划日期的销售记录 从其他一些表获取销售的其他详细信息3.将销售记录写入可报告的4.更新状态的折扣表

我可以想到的实现的3个选项是:选项1:(a)创建一个折叠式的jdbccursoritemreader,该jdbccursoritemreader根据日期和其他条件_返回类型prockitbj的对象。(b)创建了一个实现ItemProcessor的销售过程, 与SalesReader和Saleswriter一起。 -> SalesReader应根据当前的出售记录读取记录 pistionobj。 -> Saleswriter将SalesReader获取的日期写入数据库中。(c)创建折扣价以将状态更新为折扣表。

选项2:(a)在内部使用SalesReader(ItemReader方法中的ItemReader)创建Discountreader。它为每个正在读取的prectibOBJ拨打SalesReader。(b)创建Saleswriter,以将SalesReader获取的日期写入数据库中。

在任何情况下,SalesReader执行的查询参数是动态的,因为必须从当前折扣OBJ中提取。这些是仅有的两种方法还是有更好的方法?

如果我将SalesReader注入salesprocessor/discountreader,则在使用查询参数设置准备好stateTtementsEtter之前调用open()方法。

如果我在salesprocessor/discountreader中创建Salesreader的实例,我会发现读者不打开。


选项3:创建折叠式读数以阅读折扣。创建Salesprocessor,该销售人员致电DAO以根据DiscpuntObj获取销售记录将返回的数据从DAO传递给作者。

请帮助。

使读者,处理器和作家尽可能分开:每个组件都有特定的工作,混合通常是不好的。
您的用例是常见的,并且 - 如果我正确理解 - 您的困难与读者有关。
将其分为两个组件:

  • 阅读器:使用基于SQL光标的单个基于折扣 销售表之间的联接的读者
  • 处理器:对于每个记录获取

只要您需要更多的数据操作,请添加更多的处理器,而不是写入简单的处理器

这只是解决方案的建议;希望您能从中得到启动。好工作:)

我感觉您可以编写一个加入查询,因为所有内容都是基于您之前获取的内容。

如果您需要使用JobExeCutionListenerSupport(请参阅Job Jjob,AfterJob)

如果您在上面关注,这将是一个简单的入门春季用例。

最新更新