Spring 批处理状态处理器

Spring batch stateful processor

我正在尝试使用 spring 批处理从数据库读取并写入控制台。我已经使用 class JdbcCursorItemReader 实现了数据库 reader。问题是数据库中的对象分布在几个不同的行中。例如,如果我想创建 Person 对象,我将有这样的东西:

名字姓氏周薪
卡洛斯·帕尔马 1 150
卡洛斯·帕尔马 2 120

现在我想创建一个如下所示的对象:

public class Person{
 String firstName;
 String lastName;
 List<Salary> payment;

}


Salary 对象如下所示:

public class Salary{
  String week;
  Integer salary;

}

我看过 spring 批处理的示例,但处理器通常只是将当前行转换为其他内容。有没有办法让多行的一些内存来创建最终对象?

如果在数据库端使用聚合查询无法做到这一点,您可以使用驱动查询模式。此模式的想法是项目 reader 仅读取此人的详细信息(名字、姓氏),项目处理器使用其他详细信息(在您的案例中为薪水)丰富当前项目。这在文档的 Driving Query Based ItemReaders 部分中进行了描述。

请注意,此模式适用于小型数据集,但不适用于大型数据集,因为它需要对每个项目进行额外查询。