当前位置: 首页 > 知识库问答 >
问题:

使用命名参数的Spring BatchSqlUpdate与NamedParameterJdbcTemplate

双恩
2023-03-14

我已经成功地使用了BatchSqlUpdate类一段时间了。使用它唯一的麻烦是,在使用declarepareter或setParameter方法运行任何查询之前,需要注册命名参数。这意味着也必须声明参数的类型。然而,Spring还提供了一个名为NamedParameterJdbcTemplate的类,该类有一个非常方便的Batch Update方法,该方法将命名参数作为输入(一组映射或SqlParameterSource对象),而无需先声明它们。最重要的是,这个类可以很容易地重用,我也相信它是线程安全的。所以我有几个问题:

  • 执行(多个)批量更新的建议方法是什么
  • 为什么这一特性会在两个行为也不同的不同类之间复制
  • 如果NamedParameterJdbcTemplate不需要,为什么Batch SQLUpdate需要声明的参数

谢谢你的想法!

乔瓦尼

共有1个答案

益思博
2023-03-14

在做了一些研究之后,我得出了以下结论。

首先,我意识到NamedParameterJdbcTemplate类是唯一一个接受命名参数进行批量更新的类。Spring 3中添加了方法batchUpdate(字符串sql,Map[]batchValues)来实现这一点。

BatchSqlUpdate类包含一个重写的update(Object…params)方法,该方法将给定的语句参数添加到队列中,而不是像javadoc中所述的那样立即执行它们。这意味着只有在调用flush()方法或批大小超过最大值时,才会执行这些语句。这个类不支持命名参数,尽管它包含一个继承自SqlUpdate的方法。这是不幸的,因为此方法允许对命名参数重用相同的映射,而命名参数jdbctemplate。batchUpdate()方法需要一个映射数组,如果批量大小可变,则在重用映射数组时会产生相关的开销、代码膨胀和复杂性。

我认为在BatchSqlUpdate中重写updateByNamedParam(地图参数图)的版本会很有用,其行为就像更新(Object... params),但增加了对命名参数的支持。

 类似资料:
  • 在实现第三方API(mollie)时,他们似乎将支持分页的参数之一命名为from,这与内置的python相冲突。 有没有办法让我正确使用这个?我没有正确传递参数吗?注意:它们被写成。 它唯一支持的参数是:和。 给予:

  • 4.2. 使用可选参数和命名参数 Python 允许函数参数有缺省值;如果调用函数时不使用参数,参数将获得它的缺省值。此外,通过使用命名参数还可以以任意顺序指定参数。SQL Server Transact/SQL 中的存储过程也可以做到这些;如果你是脚本高手,你可以略过这部分。 info 函数就是这样一个例子,它有两个可选参数。 def info(object, spacing=10, coll

  • 问题内容: 假设我有以下HQL 似乎不起作用。是否有人只使用一个参数就可以解决此问题? 问题答案: 这用于将值绑定到命名参数。但是名称可以在查询中多次出现,这无关紧要。因此,请检查一次您是否确实有该查询的数据。 在此处查看文档 该文档中的一些主要文字 命名查询参数是查询字符串中形式为:name的标记。 通过调用setParameter(“ foo”,foo,Hibernate.INTEGER);将

  • 例子: 参考:https://docs.python.org/3/library/enum.html#planet 我为什么要这么做?如果构造函数列表中有一些基本类型(int,bool ),使用命名参数会更好。

  • 本文向大家介绍Lua 命名参数,包括了Lua 命名参数的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 在代码中我发现: 类雇员不是我们的类,可能从wsdl文件生成,其中参数(年龄和地点)被称为,,所以有人试图命名null参数以知道哪个是哪个,但这是好的做法吗?另一个问题是,和被翻译,而其他两个参数只是,但除此之外,创建带有值的变量只是为了将其传递到构造函数的下一行,可以吗?