在查询Spring批处理中使用命名参数

时间:2016-01-27 19:33:46

标签: spring-batch

我有一个弹簧批处理作业,其中的步骤如下:

<bean id="abstractReader" class="org.springframework.batch.item.database.JdbcCursorItemReader" abstract="true">
    <property name="fetchSize" value="1000"/>
    <property name="verifyCursorPosition" value="true"/>
    <property name="rowMapper">
        <bean class="org.springframework.jdbc.core.ColumnMapRowMapper"/>
    </property>
</bean>

<bean id="masterReader" parent="abstractReader" abstract="true">
    <property name="fetchSize" value="1000"/>
    <property name="dataSource" ref="masterDataSource"/>
</bean>

<bean id="abstractWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter" abstract="true">
    <property name="assertUpdates" value="false"/>
    <property name="itemPreparedStatementSetter">
        <bean class="org.springframework.batch.item.database.support.ColumnMapItemPreparedStatementSetter"/>
    </property>
</bean>

<bean id="masterWriter" parent="abstractWriter" abstract="true">
    <property name="dataSource" ref="masterDataSource"/>
</bean>

<bean id="tempWriter" parent="masterWriter" scope="step">
    <property name="sql" value="${insert_query}"/>
</bean>

<bean id="tempReader" parent="masterReader" scope="step">
    <property name="sql" value="${select_query}"/>
</bean>

<batch:step id="tempStep">
        <batch:tasklet>
            <batch:chunk commit-interval="100"
                         reader="tempReader"
                         writer="tempWriter"/>
        </batch:tasklet>
</batch:step>

有没有办法在查询中引入命名参数支持?目前JdbcCursorItemReader正在使用PreparedStatement。 (现在在查询中太多了?)

1 个答案:

答案 0 :(得分:0)

JdbcCursorItemReader没有办法,但您可以使用JdbcPagingItemReader进行操作。您可以在此处的文档中阅读有关该阅读器的更多信息:https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/database/JdbcPagingItemReader.html