Spring JdbcTemplate执行vs更新

时间:2016-09-12 16:06:16

标签: spring jdbc

JdbcTemplateexecute(String sql)update(String sql)之间的区别是什么?

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

1 个答案:

答案 0 :(得分:17)

如果方法调用成功且没有错误,方法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表示正在进行数据操作操作。

希望,这有帮助。