Java 通过spring数据流非常大的表jdbc Resultset.TYPE_FORWARD_ONLY READ_ONLY

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

您好,我想流式传输一个非常大的表spring数据jdbc。为此目的 我已将连接设置为只读。我已在存储库中声明了一个方法,其外观如下:

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
            }
        });