首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spring进行批量更新

使用Spring进行批量更新
EN

Stack Overflow用户
提问于 2014-06-22 23:41:22
回答 2查看 1.8K关注 0票数 0

我正在尝试批量更新查询,但是每个更新查询都是不同的,但是运行在同一个表上。Where子句是相同的。

例如:

表: A、B、C、D、ID列

代码语言:javascript
复制
update A where ID=1 
update B,C where ID=1
update D,B where ID=1 and so on ... ( all the combinations of A,B,C,D) 

我研究过spring jdbc (JDBCTemplate和JDBCNamedParameter )和QueryDsl,但不可能有这样的更新。

有没有其他方法可以进行批处理这样的更新?我坚持使用Spring-JDBC。

EN

回答 2

Stack Overflow用户

发布于 2014-06-24 22:26:24

是否要使用为每个更新传递参数的预准备语句?如果是这样,则不可能以批处理的形式完成此操作。您可以批处理多个语句,但随后必须在不使用占位符作为参数的情况下创建这些语句。在此场景中,您将使用int[] JdbcTemplate.batchUpdate(String[] sql)方法(http://docs.spring.io/spring/docs/4.0.3.RELEASE/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#batchUpdate-java.lang.String:A-)。

不能使用JDBC API批量处理不同的预准备语句。您可以批处理不带参数的单个语句(http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#addBatch(java.lang.String)),也可以批处理预准备语句(http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#addBatch())的多个参数集,但所有参数集的SQL语句必须相同。

您仍然可以在一个事务中包装多个更新调用,但会有多个到数据库服务器的往返。

票数 0
EN

Stack Overflow用户

发布于 2014-06-24 23:43:17

您可以使用存储的proc包装您的更新,然后您可以批量往返到数据库。

在存储的proc中,您需要根据传入的参数生成更新。因此,您可以测试null,或者为每列传递一个单独的标志。如果设置了该标志,则生成更新该列的SQL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24352867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档