很多时候我需要 RowCallbackHandler,因为在处理结果集时,我不会将每一行映射到单个类型,也不将每个结果集映射到单个数据结构。相反,我可以将大多数行映射到特定的 Java bean,并将其余行添加到列表中以进行后处理。
在这些情况下,我需要一个返回类型为 void 的回调,唯一满足此要求的回调是 RowCallbackHandler。
但是我没有遇到过很多这样的例子,而且我必须承认,使用 JDBC 并循环 ResultSet 在美学上比使用笨重的 Spring 回调更好。 RowCallbackHandler 比我想象的更常见吗?我很好奇人们会说什么......
<小时/>编辑:有些人询问我的数据模型。好的,有一个 nodes
表和一个 edges
表。如果节点 A 和 B 之间有一条边,则该边可以表示两件事:
- A 和 B 是相互作用的不相交节点
- A 是 B 的成员,反之亦然
在第二种情况下,我需要将这些组节点添加到列表中。它们还不能映射到 Java bean,因为它们并不表示不相交节点之间的交互。
也许我应该做的是进行 2 个查询,一个检索案例 (1),另一个检索案例 (2)。情况 (1) 可以映射到 Java bean,情况 (2) 可以映射到列表。
如果这确实更好,那么也许 RowCallbackHandler
是一种不好的代码味道?
最佳答案
如果您想要处理整个结果集而不返回任何内容,只需使用 ResultSetExtractor<Void>
(以及将其作为参数的 JdbcTemplate 方法之一)。
关于java - RowCallbackHandler 与 JdbcTemplate 的流行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16696683/