我正在使用自定义 itemReader 从外部休息 API 读取数据,它工作得很好。但是,当使用 ItemProcessor 将数据处理到我的模型类中时,就会出现问题。不幸的是,API 响应是一个对象,其中嵌套了一个数组,这意味着我必须使用引用另一个类的列表来存储其中的数据。
StockDTO 数据类:
public class StockDTO {
// We will change the field data types later when we process the data into our model.
private String from;
private String to;
private List<ProductDTO> products;
// Getters and Setters allow RestTemplate to set the data from the external rest API.
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public List<ProductDTO> getProducts() {
return products;
}
public void setProducts(List<ProductDTO> products) {
this.products = products;
}
}
ProductDTO 数据类(列表数据):
public class ProductDTO {
// We will change the field data types later when we process the data into our model.
private String sku;
private String name;
private String startDate;
// Getters and Setters allow RestTemplate to set the data from the external rest API.
public String getSku() {
return sku;
}
public void setSku(String sku) {
this.sku = sku;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
}
模型类:
@Entity
public class Stock {
@Id
private long id;
private int item_from;
private int item_to;
private long sku;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getItem_from() {
return item_from;
}
public void setItem_from(int item_from) {
this.item_from = item_from;
}
public int getItem_to() {
return item_to;
}
public void setItem_to(int item_to) {
this.item_to = item_to;
}
public long getSku() {
return sku;
}
public void setSku(long sku) {
this.sku = sku;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
ItemProcessor<StockDTO, Stock>
public class StockDataProcessor implements ItemProcessor<StockDTO, Stock> {
@Override
public Stock process(StockDTO stockDTO) throws Exception {
Stock stock = new Stock();
stock.setItem_from(Integer.parseInt(stockDTO.getFrom()));
stock.setItem_to(Integer.parseInt(stockDTO.getTo()));
// I'm only able to get the first index sku, name from the list:
stock.setSku(Long.parseLong(stockDTO.getProducts().get(0).getSku()));
stock.setName(stockDTO.getProducts().get(0).getName());
return stock;
}
}
我应该创建另一个名为 Product 的模型类以便我可以创建 ItemProcessor<ProductDTO, Product> 还是可以在不创建另一个处理器的情况下从 ItemProcessor<StockDTO, Stock> 获取所有列表项?谢谢你。