批量处理 Spring 行
handle multiple rows in Spring batch
我是spring批处理的新手,我只想问一下如何从结果集中的多行中检索数据。
我有以下情况:
- 有两个不同的 table 表示员工和工资单。
- 一个员工可以根据某个 ID 拥有多个工资单。
- 我使用了查询
select * from emp,pay whem emp.id=pay.id & emp.id = "id"
。
- 现在 returns 多行,我必须创建一个 xml
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;
}
我是spring批处理的新手,我只想问一下如何从结果集中的多行中检索数据。 我有以下情况:
- 有两个不同的 table 表示员工和工资单。
- 一个员工可以根据某个 ID 拥有多个工资单。
- 我使用了查询
select * from emp,pay whem emp.id=pay.id & emp.id = "id"
。 - 现在 returns 多行,我必须创建一个 xml
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;
}