处理Spring批处理中的多行

时间:2016-05-09 06:12:39

标签: spring spring-batch batch-processing

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

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

    <EMP>
    ....
    ...
    <Payroll>
    .
    .
    .
    </Payroll>
    <Payroll>
    .
    .
    .
    </Payroll>
    </emp>
    
  6. 使用RowMapper时,我只能创建一个工资单子项,但该表可能有多个子项。请帮忙......

2 个答案:

答案 0 :(得分:0)

你需要像群阅读器这样的东西,它包裹着你的数据库阅读器。

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

答案 1 :(得分:0)

这个用例正是为什么创建像Hibernate这样的ORM框架的原因。考虑为您的读者使用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;

}