【问题标题】:spring batch getting a SQLParameterSource from a BeanWrapperFieldSetMapper春季批处理从 BeanWrapperFieldSetMapper 获取 SQLParameterSource
【发布时间】:2014-03-31 17:51:06
【问题描述】:

我正在使用 BeanWrapperFieldSetMapper 将 CSV 文件的内容映射到自定义 bean。是否有一个弹簧批处理实用程序类可以将此 bean 转换为实现 SQLParameterSource 接口的对象。我正在寻找一个使用反射来填充 MapSqlParameterSource 类的类,它使用自定义 bean 字段名称和关联值以及键/值对。

这是我目前的工作配置

<bean id="abcFileReaderDBLoaderJob" parent="simpleJob">
    <property name="steps">
        <list>
            <bean parent="simpleStep">
                <property name="itemReader">
                    <bean class="org.springframework.batch.item.file.FlatFileItemReader">
                        <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="strict" value="false"/>
                                        <property name="names" value="a,b,c" />
                                    </bean>
                                </property>
                                <property name="fieldSetMapper">
                                    <bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
                                        <property name="prototypeBeanName" value="abcBean"/>
                                    </bean>
                                </property>
                            </bean>
                        </property>
                        <property name="resource">
                            <bean class="org.springframework.core.io.FileSystemResource">
                                <constructor-arg value="${abc.file}" />
                            </bean>
                        </property>
                    </bean>
                </property>
                <property name="itemWriter" ref="abcTableWriter"/>
            </bean>
        </list>
    </property>
</bean>

我的通用表编写器有这个接口

/**
 * Takes a list of SqlParameterSource and writes to the DB.
 */
public class TableWriter implements ItemWriter<SqlParameterSource> {
    ....
}

【问题讨论】:

    标签: spring-batch


    【解决方案1】:

    你的意思是像BeanPropertySqlParameterSource这样的东西吗?

    SqlParameterSource 实现,从 给定 JavaBean 对象的 bean 属性。豆子的名字 属性必须与参数名称匹配。

    使用 Spring BeanWrapper 来访问下面的 bean 属性。

    【讨论】:

    • 我猜是这样,但似乎我必须在我的读者和作者之间添加一个“处理器”步骤。我希望我可以配置我的阅读器以返回所需的类型并避免额外的步骤。
    • ItemProcessor 是数据转换的正确方式;你的代码会更清晰
    猜你喜欢
    • 1970-01-01
    • 2014-12-15
    • 2018-05-27
    • 2015-05-13
    • 2017-06-25
    • 2017-10-06
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多