Spring batch spring批处理编写器返回null在文件中打印null
我是新来的。 实际上,我正在尝试验证writer中的数据。 因此,这里我从处理器获得了Spring batch spring批处理编写器返回null在文件中打印null,spring-batch,Spring Batch,我是新来的。 实际上,我正在尝试验证writer中的数据。 因此,这里我从处理器获得了代位权(pojo类),现在我必须检查它的有效性——如果该对象已经存在于映射中,则不将该值返回到文件; 否则返回该数据 因此,当我在if中返回null时,它会在输出文件中打印null 实际上,我想从文件中跳过该记录以删除重复项 聚合方法: @Override public String aggregate(Subrogration subrogration) { StringBuilder result
代位权(pojo类),现在我必须检查它的有效性——如果该对象已经存在于映射中,则不将该值返回到文件;
否则返回该数据
因此,当我在if
中返回null时,它会在输出文件中打印null
实际上,我想从文件中跳过该记录以删除重复项
聚合方法:
@Override
public String aggregate(Subrogration subrogration) {
StringBuilder result = new StringBuilder();
//StringBuffer sb = new StringBuffer();
System.out.println("inside aggregator");
result.append(subrogration.toString());
logger.info("Subrogration result" + subrogration.toString());
if(SubrogrationFileTransferTasklet.map.containsKey(subrogration.getGRP_NBR()+subrogration.getSECT_NBR())){
System.out.println("douplicate value");
return null;
}
else{
return result.toString();
}
}
并且文件输出是
9970150000050
997500150000050
900250000050
99865400001000.0
9980250000100
9986520000100
9999050000100
null
01890001000.0
02076010001000.0
0207640001000.0
02076000001000.0
020760001000.0
02076000001000.0
020703010001000.0
02076880001000.0
我不希望文件中出现空值。要执行此操作,您应该在项目处理器中进行筛选,而不是在线性聚合器中进行筛选。您的ItemProcessor
应返回null,该值不会被写出。在此过程中,使用LineAggregator
进行过滤太晚
您可以在以下文档(第6.3.2节)中阅读有关使用ItemProcessor
筛选记录的更多信息: