遍历 JDBC 模板的 ResultSetExtractor 而不保留对对象的引用(大数据集)?

Posted

技术标签:

【中文标题】遍历 JDBC 模板的 ResultSetExtractor 而不保留对对象的引用(大数据集)?【英文标题】:Iterate through JDBC template's ResultSetExtractor without keeping references to the object (Large data set)? 【发布时间】:2017-04-27 16:50:48 【问题描述】:

假设我有一个包含 10,000 行的数据库表。

我只是想遍历每一行而不为每一行构造一个域对象。对于结果集中的每一行,我想调用一个方法并做我自己的事情。

【问题讨论】:

好吧,那是什么阻止了你? 现在什么都没有。刚刚发现应该使用 RowCallbackHandler 而不是 RowMapper :) 是的,如果你真的不打算做任何映射,那是一种更合适的机制。 @Kayaman processRow 方法是否自动为结果集中的每一行执行 .next() 类型的方法?我在文档中注意到它说不要在结果集上使用 .next()。 是的,迭代是自动的。如果您需要跟踪您所在的行,则会提供 index 参数。 【参考方案1】:

使用 RowCallbackHandler 代替 RowMapper。您可以执行 JDBC 操作并通过您自己的自定义 RowCallbackHandler 的实例,并在名为 processRow() 的覆盖方法中执行您想要的任何操作。对于 jdbc 操作查询中的每个返回,都会调用这个 processRow() 方法。

【讨论】:

以上是关于遍历 JDBC 模板的 ResultSetExtractor 而不保留对对象的引用(大数据集)?的主要内容,如果未能解决你的问题,请参考以下文章

Spring对JDBC的模板支持——JdbcTemplate

JDBC 模板中的 DATEADD

为啥 Spring 的 JDBC 模板不使用表默认值

Spring的JDBC模板

如何使用 JDBC 模板更新字符变化数组

JDBC 查询 模板