gpt4 book ai didi

使用命名参数的 Spring BatchSqlUpdate 与 NamedParameterJdbcTemplate

转载 作者:行者123 更新时间:2023-12-04 17:23:59 25 4
gpt4 key购买 nike

我一直在用BatchSqlUpdate成功上课了一段时间。使用它的唯一烦恼是在使用 declareParameter 运行任何查询之前需要注册命名参数。或 setParameter方法。这意味着还必须声明参数的类型。但是,Spring 也提供了 NamedParameterJdbcTemplate class里面有个很方便的batchUpdate将命名参数作为输入的方法(映射数组或 SqlParameterSource 对象)无需先声明它们 .最重要的是,这个类可以很容易地重用,我也相信它是线程安全的。
所以我有几个关于这个的问题:

  • 执行(多个)批量更新的推荐方法是什么?
  • 为什么此功能会在两个行为也不同的不同类中重复?
  • 为什么BatchSqlUpdate如果 NamedParameterJdbcTemplate,则需要声明的参数才不是?

  • 谢谢你的想法!

    乔瓦尼

    最佳答案

    经过一番研究,我得出了以下结论。

    首先,我意识到NamedParameterJdbcTemplate class 是唯一一个接受命名参数进行批量更新的类。方法batchUpdate(String sql,Map[] batchValues)在 Spring 3 中添加以实现此目的。
    BatchSqlUpdate类包含一个被覆盖的 update(Object... params)将给定的语句参数添加到队列而不是立即执行它们的方法,如 javadoc 中所述。这意味着语句只有在 flush() 时才会被执行。方法被调用或批处理大小超过最大值。这个分类不支持命名参数,尽管它包含一个 updateByNamedParam()方法继承自 SqlUpdate .这是不幸的,因为此方法允许为命名参数重用相同的映射,而 NamedParameterJdbcTemplate.batchUpdate()方法需要一个映射数组,如果批量大小是可变的,那么在重用映射数组时会产生相关的开销、代码膨胀和复杂性。

    我认为拥有 updateByNamedParam(Map paramMap) 的覆盖版本会很有用在 BatchSqlUpdate表现得像 update(Object... params)但增加了对命名参数的支持。

    关于使用命名参数的 Spring BatchSqlUpdate 与 NamedParameterJdbcTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15277584/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com