If I understand the question correctly, you want two different columns to have different date formats (not different rows have different formats). You can do this by implementing FieldSetMapper as indicated in the docs .
@Bean public FlatFileItemReader<Person> secondReader() { FlatFileItemReader<Person> reader = new FlatFileItemReader<Person>(); reader.setResource(new ClassPathResource("sample-data2.csv")); reader.setLineMapper(new DefaultLineMapper<Person>() { { setLineTokenizer(new DelimitedLineTokenizer() { { setNames(new String[] { "firstName", "lastName", "fDate", "sDate" }); } }); setFieldSetMapper(new PersonMapper()); } }); return reader; }
implementation:
public class PersonMapper implements FieldSetMapper<Person> { @Override public Person mapFieldSet(FieldSet fieldSet) throws BindException { Person person = new Person(); person.setFirstName(fieldSet.readString("firstName")); person.setLastName(fieldSet.readString("lastName")); person.setFirstDate(fieldSet.readDate("fDate", "MM/dd/yyyy")); person.setSecondDate(fieldSet.readDate("sDate", "dd-MMM-yyyy")); return person; }
}
source share