При использовании FlatFileItemReader для чтения файла csv тип отображения столбца - Int, но этот столбец является нулевым в файле csv (например: 6321517,Jack, 1,,
. Последние два столбца пусты).Исключение (java.lang.NumberFormatException: Unparseable number
) выдается при разборе файла
csv
CUSTR_NBR,SUR_NAME,CHECK_FLAG,RESN_CODE
6321517,Jack,1,,
Первая строка данных (CUSTR_NBR, SUR_NAME, CHECK_FLAG, RESN_CODE) анализируется сначала, поэтому яустановить .SetLinesToSkip(1)
.Тем не менее, соответствующие «CHECK_FLAG» и «RESN_CODE» не могут быть выполнены нормально, если анализируется нулевое значение.Я считаю, что есть соответствующий элемент конфигурации.Я просмотрел документацию для Springbatch и не смог найти связанных элементов конфигурации.
csvItemReader
@Bean
@StepScope
public FlatFileItemReader<InfoDTO> csvItemReader() {
FlatFileItemReader<InfoDTO> csvItemReader = new FlatFileItemReader<>();
csvItemReader.setResource(new ClassPathResource("data/charge-off.csv"));
csvItemReader.setLinesToSkip(1);
DelimitedLineTokenizer tokenizer=new DelimitedLineTokenizer();
String[] tokens = new String[]{"CUSTR_NBR","SUR_NAME","CHECK_FLAG","RESN_CODE","EMPNO"};
tokenizer.setNames(tokens);
DefaultLineMapper<InfoDTO> lineMapper=new DefaultLineMapper<InfoDTO>();
lineMapper.setLineTokenizer(tokenizer);
lineMapper.setFieldSetMapper(new InfoFileMapper());
lineMapper.afterPropertiesSet();
csvItemReader.setLineMapper(lineMapper);
return csvItemReader;
}
mapper
public class InfoFileMapper implements FieldSetMapper<ChargeOffBatchDTO> {
@Override
public InfoDTO mapFieldSet(FieldSet fieldSet) throws BindException {
if(fieldSet == null){
return null;
}
return new InfoDTO(
fieldSet.readString("CUSTR_NBR"),
fieldSet.readString("SUR_NAME"),
fieldSet.readString("CHECK_FLAG"),
fieldSet.readInt("RESN_CODE"),
fieldSet.readInt("EMPNO")
);
}
}
Мне нужно сопоставить нулевой столбецдо значения 0. Как настроить 101