我确定了读者需要使用的模式 . 我需要创建类 WSRequestClass
并将其发送到SOAP Web服务 .
public class WSRequestClass{
private String data1;
private String data2;
private String data3;
private String data4;
private List<ClassB> dataList;
}
要创建 WSRequestClass
是必要的:
-
从表A中读取
data1
和data2
. -
从表B中读取
data3
和data4
. -
List<ClassB>
应该从更复杂的流程创建 . 首先,我从表C中获取查询数据,但此查询的结果是List<ClassA>
. 我需要处理List<ClassA>
的每个项目并将其转换为ClassB
,其中一些属性是从ClassA
计算的 . (大块模式,但没有作家) .
public class ClassA {
private Date date;
private BigDecimal amount1;
private BigDecimal amount2;
private String data;
//getters & setters
...
}
public class ClassB {
private Date date;
private BigDecimal amount1;
private BigDecimal amount2;
private BigDecimal amount3;
private BigDecimal amount4;
private String data1;
private String data2;
//getters & setters
...
}
我已经找到了简单块模式和tasklet的多个示例,但没有一个遵循这个结构 . 此作业使用java配置和JdbcTemplate进行查询 . Web服务的开发称它已经完成,我唯一的问题是我必须从多个表中读取并有效地读取列表,将每个项目转换为 ClassB
并设置为 WsRequestClass
.
请指导我使用的模式,因为常见的 ItemReader
对我不起作用,我不知道如何实现自定义阅读器,让我做我想要的 .
1 回答
我觉得你错了 . 批处理中存在称为驱动查询模式的模式 . 在其中,您的读者基本上读取对象的键 . 然后使用处理器填写其他信息 . 您可以在Spring Batch文档中阅读有关此模式的更多信息:https://docs.spring.io/spring-batch/trunk/reference/html/patterns.html#drivingQueryBasedItemReaders