Spring 为什么我们不应该在RowCallBackHandler中执行rs.next?
我可以将Spring 为什么我们不应该在RowCallBackHandler中执行rs.next?,spring,jdbctemplate,Spring,Jdbctemplate,我可以将while(rs.next())放入RowCallBackHandler中,根据spring文档,这是不应该做的。为什么不应该这样做?我可以理解,这个while(rs.next())可以在没有行回调处理程序的情况下完成。但是为什么spring在RowCallBackHandler中允许这样做呢?因为spring已经在调用rs.next。名称RowCallbackHandler意味着为结果集中的每一行调用它。如果您想自己做,请使用ResultsetExtractor。Spring只需调用n
while(rs.next())
放入RowCallBackHandler
中,根据spring文档,这是不应该做的。为什么不应该这样做?我可以理解,这个while(rs.next())
可以在没有行回调处理程序的情况下完成。但是为什么spring在RowCallBackHandler
中允许这样做呢?因为spring已经在调用rs.next
。名称RowCallbackHandler
意味着为结果集中的每一行调用它。如果您想自己做,请使用ResultsetExtractor
。Spring只需调用next()
并将ResultSet
传递给该方法。我同意,但RowCallBackHandler用于处理每一行。例如,创建XML文档。如果是这样的话,spring应该注意不允许执行rs.next-inside-processRow方法吗?不,为什么要这样做。因为这将意味着增加一个额外的间接层和性能。JDBC材料是普通JDBC类的方便包装器。当我在RowCallBackHandler中使用rs.next时,对于大于300K的记录的大型结果集,我看到一个性能值小于没有while(rs.next)的性能值。在这种情况下,为什么我应该选择RowCallBackHandler?为了更好地维护代码?或者它有什么特别的意义,可能我没有意识到。使用方便。它使您能够专注于重要的内容,而不是检索结果的具体细节。如上所述,如果您想自己做,请使用ResultSetExtractor
。使用RowCallbackHandler
会有一些开销,因为会计算一个整数,这是一个额外的方法调用,这些东西会给每个记录处理增加一点时间。因为Spring已经在调用rs.next
。名称RowCallbackHandler
意味着为结果集中的每一行调用它。如果您想自己做,请使用ResultsetExtractor
。Spring只需调用next()
并将ResultSet
传递给该方法。我同意,但RowCallBackHandler用于处理每一行。例如,创建XML文档。如果是这样的话,spring应该注意不允许执行rs.next-inside-processRow方法吗?不,为什么要这样做。因为这将意味着增加一个额外的间接层和性能。JDBC材料是普通JDBC类的方便包装器。当我在RowCallBackHandler中使用rs.next时,对于大于300K的记录的大型结果集,我看到一个性能值小于没有while(rs.next)的性能值。在这种情况下,为什么我应该选择RowCallBackHandler?为了更好地维护代码?或者它有什么特别的意义,可能我没有意识到。使用方便。它使您能够专注于重要的内容,而不是检索结果的具体细节。如上所述,如果您想自己做,请使用ResultSetExtractor
。使用RowCallbackHandler
会有一些开销,因为会计算一个整数,这是一个额外的方法调用,这些东西会给每个记录处理增加一点时间。