如何在Spring Batch中获取FlatFileItemWriter中的所有列名<property name =“names”values =“???”>?

时间:2016-04-02 09:47:42

标签: java spring spring-batch spring-batch-admin

我是Spring Batch版本3.0.6.RELEASE的新手。我开发了一个spring项目,它从mysql数据库读取数据并写入CSV文件。我的数据库表有很多列,为了读取我需要写所有列名。 获取所有列名称的方式是什么?

<bean id="flatFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter"
        scope="step">

        <property name="resource" value="file:csv/customers.txt" />

        <property name="lineAggregator">

            <!-- An Aggregator which converts an object into delimited list of strings -->
            <bean
                class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
                <property name="delimiter" value="|" />

                <property name="fieldExtractor">
                    <!-- Extractor which returns the value of beans property through reflection -->
                    <bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">

                        <property name="names"
                                  value="customerNumber,customerName,contactLastName,contactFirstName,
          phone,addressLine1,addressLine2,city,state,postalCode,country,salesRepEmployeeNumber,creditLimit" />
                    </bean>
                </property>
            </bean>
        </property>
    </bean>

我不想在那里写每个列名。我需要改变什么?

1 个答案:

答案 0 :(得分:0)

如果你想要一个简单的编写器配置,你不应该使用特定的FieldExtractor,DelimitedLineAggregator will fall back to a PassThroughFieldExtractor

传递一个合适的项目,它可能会按照您期望的输出方式工作,我希望使用FieldSet或Array类型的项目获得最佳结果

请参阅PassThroughFieldExtractor.extract

  

FieldSet或数组将按原样返回