Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 为什么我们不应该在RowCallBackHandler中执行rs.next?_Spring_Jdbctemplate - Fatal编程技术网

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
会有一些开销,因为会计算一个整数,这是一个额外的方法调用,这些东西会给每个记录处理增加一点时间。