我的一般性问题:如果批次中只有一个查询,则调用preparedStatement.executeBatch()
是否效率低/做法不好?
我正在为Java Helper Library编写一个通用方法来执行查询。有一个名为HelperQuery
的javabean,它包含一个数组列表,另一个名为QueryParameter
的javabean包含一个类型(如STRING
,BLOB
,INT
等。)和一个价值。 QueryParameter
用于填充HelperQuery
的{{1}}。在许多情况下,只有一个PreparedStatement
s数组。
我的具体问题是:如果只有一个QueryParameter
数组,我是否可以处理不同的事情,或者无论多少{{1}都可以处理完全相同的事情有吗?
答案 0 :(得分:2)
executeBatch
是来自super
的父PreparedStatement
的“Statement
”方法,该方法返回int[]
,表示已执行的成功/失败查询和executeQuery
会返回ResultSet
。因此,让两者成为完全不同的方法调用是个好主意,因此开发人员可以以不同的方式处理它们。我建议:
executeQuery(HelperQuery helperQuery)
方法将返回关联的ResultSet
,并且只会从QueryParameter
获取第一个HelperQuery
(为方便起见)和开发人员可以使用的其他方法指定要使用哪个QueryParameter
(要么让它们指定QueryParameter
列表的数量,要么只明确传入QueryParameter
(我建议两者中的第二个))。executeBatch(HelperQuery helperQuery
方法将返回int[]
,开发人员可以按照自己的意愿处理。为用户(在这种情况下是开发人员)提供他们想要的功能(但也为他们提供执行常见任务的简单解决方案)总是好的。