Java 通过spring数据流非常大的表jdbc Resultset.TYPE_FORWARD_ONLY READ_ONLY
您好,我想流式传输一个非常大的表spring数据jdbc。为此目的 我已将连接设置为只读。我已在存储库中声明了一个方法,其外观如下:Java 通过spring数据流非常大的表jdbc Resultset.TYPE_FORWARD_ONLY READ_ONLY,java,jdbc,spring-data,persistence,spring-data-jdbc,Java,Jdbc,Spring Data,Persistence,Spring Data Jdbc,您好,我想流式传输一个非常大的表spring数据jdbc。为此目的 我已将连接设置为只读。我已在存储库中声明了一个方法,其外观如下: PackageRepository extends Repository<Package,String> { Stream<Package> findAll(); } 从源代码来看,似乎还不支持游标。我注意到,对于MyBatisDataAccessStrategy中的findAll方法,它已被使用sqlSession()。select
PackageRepository extends Repository<Package,String> {
Stream<Package> findAll();
}
从源代码来看,似乎还不支持游标。我注意到,对于MyBatisDataAccessStrategy中的findAll方法,它已被使用sqlSession()。selectList()不应在此处用作游标?SqlSession.selectCursor ?我想我明白了,基本上我需要定义自己的DefaultDataAccessStrategy。如果我没有弄错的话。你是对的,这还没有得到支持,但我喜欢这个主意。我看到您已经创建了一个罚单:谢谢。我开始为这个问题制定解决方案,并对Jira问题添加了一些评论。从源代码来看,似乎还不支持游标。我注意到,对于MyBatisDataAccessStrategy中的findAll方法,它已被使用sqlSession()。selectList()不应在此处用作游标?SqlSession.selectCursor ?我想我明白了,基本上我需要定义自己的DefaultDataAccessStrategy。如果我没有弄错的话。你是对的,这还没有得到支持,但我喜欢这个主意。我看到您已经创建了一张罚单:谢谢。我开始为这个问题制定解决方案,并对Jira问题添加了一些评论。
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
}
});