我有一個文件,其中包含以逗號(「,」)分隔的值(用戶ID)列表,如下所示。彈簧批 - 逗號分隔值 - 保存在數據庫中
111,222,333,444,555,777 ............
該文件包含數以百萬計的這樣的記錄,我想這些值保存到一個列在RDBMS表。 我試着用DelimitedLineTokenizer來解析數據。
問題是「DelimitedLineTokenizer」只考慮一行中的一個條目,其餘的值將被忽略。第一個條目(「111」)被保存,同一行中的其餘值將被忽略。如果存在第二行,則第二行中的第一個元素將被保存,並且會被忽略。
有沒有一種方法可以從一行中標記所有逗號分隔值並將其全部保存到數據庫中?
查詢結果如下。 INSERT INTO用戶(id)VALUES(:userid)。
我使用下面的代碼來解析文件並將其保存在數據庫中。
public FlatFileItemReader<User> reader() {
FlatFileItemReader<User> reader = new FlatFileItemReader<User>();
DelimitedLineTokenizer reader = new DelimitedLineTokenizer(",");
reader.setNames(new String[] {「userid」});
blah…blah….blah….
reader.setLineMapper(new DefaultLineMapper<User>() {
{
setLineTokenizer(reader);
setFieldSetMapper(new BeanWrapperFieldSetMapper<User>() {
{
setTargetType(User.class);
}
});
}
});
return reader;
}
@Bean
public UserItemProcessor processor() {
return new UserItemProcessor();
}
@Bean
public Job importUserJob(JobCompletionNotificationListener listener) {
return jobBuilderFactory.get("importUserJob").incrementer(new RunIdIncrementer()).listener(listener)
.flow(step1()).end().build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1").<User, User> chunk(5).reader(reader()).processor(processor())
.writer(writer()).build();
}