如何在Spring批处理的FlatFileReader中设置分隔符值?

Ash*_*ngh 5 java spring batch-processing spring-batch

春天批次我是新手.我的任务是开发读取平面文件的代码,其中值由管道"|"分隔.我发现我可以通过FlatFileReader来完成它.但是我没有得到如何在读取期间设置分隔符值以及如何使用我的POJO成员变量映射每个列.

平面文件中的示例值如下.

3345|742|0|N

3346|743|1|A

3347|742|0|N

3348|742|1|C

3345|743|0|K
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Mic*_*lla 7

FlatFileItemReader代表每个记录解析到LineTokenizer(通过LineMapper).我假设你正在使用DelimitedLineTokenizer它允许你设置一个分隔符(默认是a,).要使用管道作为分隔符进行配置:

<bean id="reader" class="org.springframework.batch.item.file.FlatFileItemReader">
    <property name="resource" value="<SOME_VALUE>"/>
    <property name="lineMapper">
        <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
            <property name="lineTokenizer">
                <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                    <property name="names" value="<LIST_OF_VALUES>"/>
                    <property name="delimiter" value="|"/>
                </bean>
            </property>
            <property name="fieldSetMapper" ref="myFieldSetMapper"/>
        </bean>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

<SOME_VALUE>要读取的文件的模式在哪里,并且<LIST_OF_VALUES>是分隔文件中的列名列表.


epp*_*ppe 6

使用 Spring Batch

DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();
tokenizer.setDelimiter("|");
tokenizer.setNames(new String[]{"id", "name"});

DefaultLineMapper lineMapper = new DefaultLineMapper<Seller>();
lineMapper.setLineTokenizer(tokenizer);
Run Code Online (Sandbox Code Playgroud)