批量处理 Spring 行

handle multiple rows in Spring batch

我是spring批处理的新手,我只想问一下如何从结果集中的多行中检索数据。 我有以下情况:

  1. 有两个不同的 table 表示员工和工资单。
  2. 一个员工可以根据某个 ID 拥有多个工资单。
  3. 我使用了查询select * from emp,pay whem emp.id=pay.id & emp.id = "id"
  4. 现在 returns 多行,我必须创建一个 xml
  5. xml结构是:

    <EMP>
    ....
    ...
    <Payroll>
    .
    .
    .
    </Payroll>
    <Payroll>
    .
    .
    .
    </Payroll>
    </emp>
    

在使用 RowMapper 时,我只能创建一个工资单子项,但 table 可能有多个子项。请帮忙...

您需要类似组 reader 的东西,它环绕您的数据库 reader。

我在另一个答案中解释了这种方法: Spring batch to aggregate values and write single value

这个用例正是创建 Hibernate 等 ORM 框架的原因。考虑为您的 reader 使用 HibernateCursorItemReader,然后定义您的持久层,以便您具有以下内容:

@Entity
@Table(name = "emp")
public class Employee {

    @Id
    @Column(name = "emp_id")
    private Long id;

    @OneToMany(mappedBy="employee")
    private Set<Payment> payments = new HashSet<>();

}

@Entity
@Table(name = "pay")
public class Payment {

    @Id
    @Column(name = "pay_id")
    private Long id;

    @ManyToOne
    @JoinColumn(name = "emp_id")
    private Employee employee;

}