Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java迭代大型数据库表_Java_Jdbc_Iteration_Yield Return_Large Data - Fatal编程技术网

Java迭代大型数据库表

Java迭代大型数据库表,java,jdbc,iteration,yield-return,large-data,Java,Jdbc,Iteration,Yield Return,Large Data,我有一个c语言的程序,它使用yield-return迭代一个非常大的数据库查询。然后,调用方法通过并行调用IEnumerable.for each来处理每个对象。Java没有收益回报,我在Java中看到的所有收益回报实现都非常混乱 是否有其他方法可以建议将行从dB流式传输到调用方法?到目前为止,我正在考虑将我们需要运行的方法放在我们使用jdbc的SQL迭代器中,但这也使得代码审查变得困难,因为它在某种程度上掩盖了阅读器循环中的关键方法 我会提供示例代码,但我希望有一个更高层次的想法,因为这个问题

我有一个c语言的程序,它使用yield-return迭代一个非常大的数据库查询。然后,调用方法通过并行调用IEnumerable.for each来处理每个对象。Java没有收益回报,我在Java中看到的所有收益回报实现都非常混乱

是否有其他方法可以建议将行从dB流式传输到调用方法?到目前为止,我正在考虑将我们需要运行的方法放在我们使用jdbc的SQL迭代器中,但这也使得代码审查变得困难,因为它在某种程度上掩盖了阅读器循环中的关键方法


我会提供示例代码,但我希望有一个更高层次的想法,因为这个问题以及读取非常大的文本文件对我们来说是很常见的,c收益率在这方面非常好。

是对您的选择进行分区,所以说每次选择只获取整个表的10-20%,这是一个选项吗?不确定这是否是您想要的,但是SpringJDBC使用了一种模式,其中指定了一个RowMapper实现——RowMapper有一个回调方法,可以为结果集中的每一行调用该方法,并对其执行任何需要执行的操作。您可以使用SpringJDBC,也可以自己实现这个模式。我认为如果您提供简化的示例代码会有所帮助。收益回报有多种用途,每种用途的最佳Java等价物可能不同。另外,您能否解释一下,您是如何发现收益率返回的实现“凌乱”的?@tthomassss是的,这可能是一个明确的选项。我不确定的是如何说,返回表的10%的列表,在调用方法中执行一个操作,然后继续读取下一个10%的数据库。我想调用行计数,然后在行计数+1处重新提交查询会起作用,但这同样会向数据库传递更多的查询。@GreybearedGeek谢谢,我会看看,这可能是解决方案。