【发布时间】:2016-09-12 16:06:16
【问题描述】:
JdbcTemplate中的execute(String sql)和update(String sql)有什么区别?
如果我的语句是直接的 CRUD 而不是对象创建 DDL(正如执行 javadoc 所暗示的那样),使用执行与看似更轻量级的更新是否有意义?
【问题讨论】:
JdbcTemplate中的execute(String sql)和update(String sql)有什么区别?
如果我的语句是直接的 CRUD 而不是对象创建 DDL(正如执行 javadoc 所暗示的那样),使用执行与看似更轻量级的更新是否有意义?
【问题讨论】:
如果方法调用成功且没有错误,则方法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 本质上表示正在执行数据操作操作。
希望,它会有所帮助。
【讨论】: