我有一个如下所述的输入文件。
TOKEN1,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2
此示例数据是一行,其中标记以逗号分隔。
我想知道哪种Mapper可用于此类数据?
由于
答案 0 :(得分:0)
您可以使用DelimitedLineTokenizer。令牌列表将提供给ItemProcessor。我在下面展示了一段代码片段。
如果每个标记对应于实体中的字段,您还可以设置BeanWrapperFieldSetMapper,它将解析每一行并自动创建该实体的对象。
public FlatFileItemReader<Feature> reader(String pathToFile, ApplicationContext ctx) {
FlatFileItemReader<Feature> reader = new FlatFileItemReader<Feature>();
Resource path = ctx.getResource("file:" + pathToFile);
reader.setResource(path);
reader.setLineMapper(new DefaultLineMapper<Feature>() {
{
setLineTokenizer(new DelimitedLineTokenizer(
DelimitedLineTokenizer.DELIMITER_COMMA) {
{
setNames(new String[] {"token1", "token2", "token3", .... , "tokenx" });
}
});
});
}
});
return reader;
}