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 执行与更新的主要内容,如果未能解决你的问题,请参考以下文章