很多时候,我需要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)可以映射到List。
如果确实更好,那么RowCallbackHandler
可能是不好的代码味道?
最佳答案
如果要处理整个结果集而不返回任何内容,则只需使用ResultSetExtractor<Void>
(以及使用Jcc的JdbcTemplate方法之一作为参数)。