使用NamedParameterJdbcTemplate,当我执行查询时,它会检索数百万个文档。我需要处理所有这些,但它们不必一次加载到内存中。如果应用程序不必指定其他查询子句(即不在()中使用primary_key,我如何批量处理结果集)
答案 0 :(得分:1)
我认为您可以使用任何模板(SimpleJdbc,NamedJdbc或JdbcTemplate),前提是您使用ResultSetExtractor和RowMapper或使用任何其他分页技术以块的形式检索数据。你可以参考
答案 1 :(得分:1)
我会说考虑使用本机查询,首先对您的数据进行排序,然后使用某种分页关键字TOP, LIMIT, ROWNUM
(取决于您的数据库),根据页面返回数据块,将信息带到应用程序增加了网络流量,我相信数据库可以有效地完成这项任务。
有一个很好的弹簧批量模块,允许你使用
<bean id="cmrProcessReader" class="org.springframework.batch.item.database.JpaPagingItemReader" scope="step">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="queryString" value="SELECT cmr FROM CmrRequestEntity cmr where cmr.errorMessage is null and cmr.onThread = 0 and cmr.processed = 0 " />
<property name="pageSize" value="10" />
</bean>
但我相信您没有使用JPA,因此请考虑使用本机查询。