嗨,我想流式传输一个非常大的表 spring-data-jdbc。为此,我已将连接设置为 READ_ONLY 我已在我的存储库中声明了一个方法,该方法如下所示:
PackageRepository extends Repository<Package,String> {
Stream<Package> findAll();
}
我在这里的期望是结果集的类型为 FORWARD_ONLY,并且在从数据库中收到所有结果之前,此方法不会无限期地阻塞。
在这里,我将与 Spring Data JPA 进行比较,其中 Stream 方法没有阻塞,并且根据获取大小分部分获取数据库的内容。
我错过了一些配置吗?如何使用 spring-data-jdbc 实现这种行为?
更新:我将以不同的形式提出问题。如何使用 spring-data-jdbs 实现相当于:
template.query(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement statement = con.prepareStatement("select * from MYTABLE with UR",ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
statement.setFetchSize(150000);
return statement;
}
}, new RowCallbackHandler() {
@Override
public void processRow(ResultSet rs) throws SQLException {
// do my processing here
}
});