我将通过spring批处理读取数据,并将其转储到数据库表中。
我的csv音乐事实文件的格式如下:
question; valid answer; potentially another valid answer; unlikely, but another;所有行都有一个问题,并且至少有一个有效的答案,但是可以有更多的问题。保存该数据的简单方法是在pojo中的数据中使用一个字段表示String,另一个字段用于List<String>。
下面是一个读取CSV文件的简单行映射程序,但我不知道如何以这种方式进行必要的更改以适应锯齿状的CSV文件。
@Bean
public LineMapper<MusicalFactoid> musicalFactoidLineMapper() {
DefaultLineMapper<MusicalFactoid> musicalFactoidDefaultLineMapper = new DefaultLineMapper<>();
musicalFactoidDefaultLineMapper.setLineTokenizer(new DelimitedLineTokenizer() {{
setDelimiter(";");
setNames(new String[]{"question", "answer"}); // <- this will not work!
}});
musicalFactoidDefaultLineMapper.setFieldSetMapper(new BeanWrapperFieldSetMapper<MusicalFactoid>() {{
setTargetType(MusicalFactoid.class);
}});
return musicalFactoidDefaultLineMapper;
}我该怎么办?
发布于 2015-10-14 06:18:47
写你自己的线地图。据我所见,你没有任何复杂的逻辑。
就像这样:
public MyLineMapper implements LineMapper<MusicalFactoid> {
public MusicalFactoid mapLine(String line, int lineNumber) {
MusicalFactoid dto = new MusicalFactoid();
String[] splitted = line.split(";");
dto.setQuestion(splitted[0]);
for (int idx = 1; idx < splitted.length; idx++) {
dto.addAnswer(splitted[idx]);
}
return dto;
}
}https://stackoverflow.com/questions/33116048
复制相似问题