Spring JdbcTemplate 执行与更新

Posted

技术标签:

【中文标题】Spring JdbcTemplate 执行与更新【英文标题】:Spring JdbcTemplate execute vs update 【发布时间】:2016-09-12 16:06:16 【问题描述】:

JdbcTemplate中的execute(String sql)update(String sql)有什么区别?

如果我的语句是直接的 CRUD 而不是对象创建 DDL(正如执行 javadoc 所暗示的那样),使用执行与看似更轻量级的更新是否有意义?

【问题讨论】:

【参考方案1】:

如果方法调用成功且没有错误,则方法execute(String sql) 返回void。 (参见execute(..)JavaDoc)。至于普通 JDBC,它应该/可以用于定义数据库模式元素 (DDL),例如使用 CREATE TABLE... 语句。

相比之下,update(String sql) 通常用于对应于 SQL INSERT/UPDATE/DELETE 操作的 DML 语句。在这些对数据进行操作的情况下,从程序员的角度来看,了解相应 DML 操作添加/更改/删除了多少行非常重要。

为此,update(...) 方法返回一个非负的int 值让您知道:

返回: 受影响的行数

正如 JavaDoc 在其描述中使用术语“通常”所表明的那样,您可以使用 execute(String sql) 来操作数据,而无需使用返回的 int 值。理论上,对于某些 DBMS 实现,此调用可能会快几纳秒,因为不需要传输返回值。

然而,从我个人和程序员的角度来看,您应该在使用这两种操作时牢记 DDL 和 DML 语句之间的区别,因为update 本质上表示正在执行数据操作操作。

希望,它会有所帮助。

【讨论】:

以上是关于Spring JdbcTemplate 执行与更新的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot:整合JdbcTemplate

Spring - 整合jdbc

使用Spring JdbcTemplate实现数据库操作

使用spring jdbctemplate更新一行

springboot编写持久化接口之集成jdbctemplate

jdbcTemplate 更新中的 Spring 瞬态数据访问资源异常