很多时候我需要 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
是不好的代码气味?