Spring JDBC 中 newObject[]{...parameters..} 和 PreparedStatementSetter 接口实现的区别?
Difference between newObject[]{...parameters..} and PreparedStatementSetter Interface implementation in Spring JDBC?
使用新的 Object[]{parameters} 将参数传递给 SQL 语句和使用 PreparedStatementSetter 接口有什么区别?
两者都为我们的 sql 查询语句中的占位符提供了值,那么当我们可以只使用 new Object[] 传递参数时,为什么我们实际上应该去提供这么长的 PreparedStatementSetter 接口实现??
区别是方便。
query(String sql, Object[] args, int[] argTypes, ...)
和 query(String sql, Object[] args, ...)
都是 convenience 方法,在内部调用 query(String sql, PreparedStatementSetter pss, ...)
.
与query(..., RowCallbackHandler rch)
和query(..., RowMapper<T> rowMapper)
一样都是便捷方法,在内部调用query(..., ResultSetExtractor<T> rse)
.
方便的方法很好,因为它们使常见的操作更容易完成。如果需要,提供对底层方法的访问也允许您执行不常见的操作。
作为一个图书馆,你永远不知道调用者可能需要什么,为调用者提供可供选择的选项是非常合适的。
大多数人永远不需要 PreparedStatementSetter
或 ResultSetExtractor
版本,因此请忽略它们,但请记住它们存在,以备不时之需。
使用新的 Object[]{parameters} 将参数传递给 SQL 语句和使用 PreparedStatementSetter 接口有什么区别?
两者都为我们的 sql 查询语句中的占位符提供了值,那么当我们可以只使用 new Object[] 传递参数时,为什么我们实际上应该去提供这么长的 PreparedStatementSetter 接口实现??
区别是方便。
query(String sql, Object[] args, int[] argTypes, ...)
和 query(String sql, Object[] args, ...)
都是 convenience 方法,在内部调用 query(String sql, PreparedStatementSetter pss, ...)
.
与query(..., RowCallbackHandler rch)
和query(..., RowMapper<T> rowMapper)
一样都是便捷方法,在内部调用query(..., ResultSetExtractor<T> rse)
.
方便的方法很好,因为它们使常见的操作更容易完成。如果需要,提供对底层方法的访问也允许您执行不常见的操作。
作为一个图书馆,你永远不知道调用者可能需要什么,为调用者提供可供选择的选项是非常合适的。
大多数人永远不需要 PreparedStatementSetter
或 ResultSetExtractor
版本,因此请忽略它们,但请记住它们存在,以备不时之需。