Spring batch 使用spring批处理在固定长度平面文件中写入多布局

Spring batch 使用spring批处理在固定长度平面文件中写入多布局,spring-batch,fixed-length-file,Spring Batch,Fixed Length File,要求是从数据库中获取数据(请参考下面文件中的示例数据),并使用Spring Batch创建固定长度的平面文件。该文件的规范是,将有多个记录具有相同的对齐方式,如1-5,4-7,8-24。。。。。。现在的问题是由于具有相同对齐方式的记录,显然数据将被覆盖。我需要一些解决方案来解决这个问题 我的示例代码: 这里,bean1、bean2是表的映射bean对象 <!-- ======================================================= --&

要求是从数据库中获取数据(请参考下面文件中的示例数据),并使用Spring Batch创建固定长度的平面文件。该文件的规范是,将有多个记录具有相同的对齐方式,如1-5,4-7,8-24。。。。。。现在的问题是由于具有相同对齐方式的记录,显然数据将被覆盖。我需要一些解决方案来解决这个问题

我的示例代码:

这里,bean1、bean2是表的映射bean对象

     <!-- ======================================================= -->
    <!-- Jobs Definition -->
    <!-- ======================================================= -->

    <!-- Main processes -->

    <!-- Active -->

    <job id="FixedLengthFlatFileGenerationJob" xmlns="http://www.springframework.org/schema/batch">

        <step id="FixedLengthFlatFileGenerationStep">
            <tasklet start-limit="1">
                <chunk reader="SampleReader" writer="SampleWriter"
                    commit-interval="1000">
                </chunk>                
                <listeners>
                    <listener ref="stepExecutionListener"/>
                </listeners>
            </tasklet>      
            <next on="COMPLETED" to="FileTransferStep"/>    
            <next on="STOPPED" to="SendMailOnFailure"/>
            <fail on="*"/>  
        </step>     

        <step id="SendMailOnFailure">
            <tasklet ref="OnFailureTasklet"/>
        </step>

        <step id="FileTransferStep">
            <tasklet ref="FileTransferTasklet" />
        </step>

    </job>

    <!-- ======================================================= -->
    <!-- Readers -->
    <!-- ======================================================= -->

    <bean id="SampleReader"
        class="org.springframework.batch.item.database.JdbcCursorItemReader">
        <property name="dataSource" ref="SampleDataSource" />
        <property name="sql">
            <value>
                SQL READ FROM TABLE
            </value>
        </property>
        <property name="rowMapper" ref="SampleMapper" />
    </bean>


    <!-- ======================================================= -->
    <!-- Writers -->
    <!-- ======================================================= -->

    <bean id="SampleWriter"
        class="org.springframework.batch.item.support.CompositeItemWriter">
        <property name="delegates">
            <list>
                <ref local="FileTransferWriter" />              
            </list>
        </property>
    </bean>
    <bean id="FileTransferWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
    <property name="resource" value="file:filelocation/file.txt" />

    <property name="lineAggregator">
        <bean class="org.springframework.batch.item.file.transform.FormatterLineAggregator">
            <property name="fieldExtractor">
                <bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
                 <property name="names" value="bean1,bean2" /> 

                </bean>
            </property>
            <property name="format" value="%-20s%-30s" />
        </bean>
    </property>
   </bean>

您能否提供示例数据:从数据库中读取的内容;写入文件的内容;应该写入文件的内容。此外,您能否提供您的步骤配置,而不仅仅是读者和作者。谢谢Wingeier。我已经用详细信息更新了我的问题。您能解释一下您的期望吗?因为如果我理解了你的问题,你要求的解决方案是能够在
n
大小的字段中容纳
n+x(x>0)
字符。
file.txt                                                                                               TM                          45150605033000                
UJK5457                          0000000000HC605-B045285                                      D34151631115600                   A                                                                                                                                                                        
BHJ5457                          724570420                                                                                            34151631315600                                                                                                                                                                                                                                      77014                                                                                               ct scan for therapy guide     Physical Therapy              1S   001          002060  O   AA
NTS5457                          This is a test for Policy Number 5457
UJK8334                          0000000000HC605-B045285                                      D34151631315600                   A                                                                                                                                                                        
QWS6334                          724570420                                                                                            34151631315600                                                                                                                                                                                                                                      72142                                                                                               mri neck spine w/dye          Occupational Therapy          2V001             002060  O   AA
ETS4334                          This is a test for Policy Number 4334.
RYT6313                          0000000000HC216-B406574                                      D34151611115600                   A