仅使用一个查询执行批处理?

时间:2012-06-04 14:17:36

标签: java sql jdbc prepared-statement

我的一般性问题:如果批次中只有一个查询,则调用preparedStatement.executeBatch()是否效率低/做法不好?

我正在为Java Helper Library编写一个通用方法来执行查询。有一个名为HelperQuery的javabean,它包含一个数组列表,另一个名为QueryParameter的javabean包含一个类型(如STRINGBLOBINT等。)和一个价值。 QueryParameter用于填充HelperQuery的{​​{1}}。在许多情况下,只有一个PreparedStatement s数组。

我的具体问题是:如果只有一个QueryParameter数组,我是否可以处理不同的事情,或者无论多少{{1}都可以处理完全相同的事情有吗?

1 个答案:

答案 0 :(得分:2)

executeBatch是来自super的父PreparedStatement的“Statement”方法,该方法返回int[],表示已执行的成功/失败查询和executeQuery会返回ResultSet。因此,让两者成为完全不同的方法调用是个好主意,因此开发人员可以以不同的方式处理它们。我建议:

  1. executeQuery(HelperQuery helperQuery)方法将返回关联的ResultSet,并且只会从QueryParameter获取第一个HelperQuery(为方便起见)和开发人员可以使用的其他方法指定要使用哪个QueryParameter(要么让它们指定QueryParameter列表的数量,要么只明确传入QueryParameter(我建议两者中的第二个))。
  2. executeBatch(HelperQuery helperQuery方法将返回int[],开发人员可以按照自己的意愿处理。
  3. 为用户(在这种情况下是开发人员)提供他们想要的功能(但也为他们提供执行常见任务的简单解决方案)总是好的。