我正在编写一个java应用程序来从一个表中读取数据并将其写入某个文件中。我们的表有数百万条记录,我们需要每天阅读 并写入文件。所以,我使用Spring批量读取器作为JdbcPagingItemReader,因为我想读取页面中的记录。 下面是我的bean定义: -
<bean id="pagingItemReader" class="org.springframework.batch.item.database.JdbcPagingItemReader"
scope="step">
<property name="dataSource" ref="dataSource" />
<property name="queryProvider">
<bean
class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="selectClause" value="select user_id, user_name , address" />
<property name="fromClause" value="from mySchema.test" />
<property name="whereClause" value="where address <> ''" />
<property name="sortKey" value="user_id" />
</bean>
</property>
<property name="pageSize" value="1000" />
<property name="rowMapper">
<bean class="com.myCompany.myClient.batch.reader.userVO" />
</property>
</bean>
Spring在内部生成查询,如下所示: -
SELECT user_id, user_name , address FROM mySchema.test ORDER BY user_id ASC FETCH FIRST 1000 ROWS ONLY
但是,我正在使用DB2数据库,使用全局设置在读取期间锁定。所以避免这种情况,我们在每个查询中使用“with ur”,我们写。 所以我希望我的查询生成为: -
SELECT user_id, user_name , address FROM mySchema.test ORDER BY user_id ASC FETCH FIRST 1000 ROWS ONLY with ur
我无论如何也无法找到相同的东西。请告诉我如何在使用JdbcPagingItemReader时在查询中附加一些额外的部分。
答案 0 :(得分:2)
JdbcPagingItemReader
允许您设置PagingQueryProvider
;也许使用自定义的 - 而不是使用由SqlPagingQueryProviderFactoryBean
生成的那个 - 可以解决您的问题