Gio*_*tta 5 spring jdbc batch-processing sql-update
我已经成功使用了BatchSqlUpdate一段时间了。使用它的唯一麻烦之处在于,需要使用declareParameteror setParameter方法运行任何查询之前,必须注册命名参数。这意味着还必须声明参数的类型。但是,Spring还提供了一个NamedParameterJdbcTemplate类,该类具有一种非常方便的batchUpdate方法,该方法将命名参数作为输入(地图或SqlParameterSource对象的数组)作为输入,而无需先声明它们。最重要的是,该类可以轻松重用,并且我也相信它是线程安全的。所以我对此有两个问题:
BatchSqlUpdate要求声明的参数NamedParameterJdbcTemplate?感谢您的想法!
乔万尼
经过一些研究后,我得出以下结论。
首先,我意识到该类NamedParameterJdbcTemplate是唯一接受批量更新的命名参数的类。batchUpdate(String sql,Map[] batchValues)Spring 3 中添加了该方法来实现此目的。
该类BatchSqlUpdate包含一个重写的update(Object... params)方法,该方法将给定的语句参数添加到队列中,而不是立即执行它们,如 javadoc 中所述。flush()这意味着只有在调用该方法或批量大小超过最大值时才会执行语句。该类不支持命名参数,尽管它包含updateByNamedParam()从 继承的方法SqlUpdate。这是不幸的,因为该方法允许为命名参数重用相同的映射,而该NamedParameterJdbcTemplate.batchUpdate()方法需要映射数组,如果批量大小可变,则会产生相关的开销、代码膨胀和重用映射数组的复杂性。
我认为拥有一个updateByNamedParam(Map paramMap)in的重写版本BatchSqlUpdate,其行为与此类似update(Object... params),但增加了对命名参数的支持,这将很有用。
| 归档时间: |
|
| 查看次数: |
2577 次 |
| 最近记录: |