【问题标题】:Difference between newObject[]{...parameters..} and PreparedStatementSetter Interface implementation in Spring JDBC?Spring JDBC中newObject[]{...parameters..}和PreparedStatementSetter接口实现的区别?
【发布时间】:2020-05-27 07:32:57
【问题描述】:

使用 new Object[]{parameters} 向 SQL 语句传递参数和使用 PreparedStatementSetter 接口有什么区别?

两者都为我们的 sql 查询语句中的占位符提供值,那么当我们可以使用 new Object[] 传递参数时,为什么我们实际上要提供如此长的 PreparedStatementSetter 接口实现呢??

【问题讨论】:

    标签: java spring jakarta-ee spring-jdbc


    【解决方案1】:

    区别在于方便

    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)

    方便的方法很好,因为它们使常见的操作更容易执行。如果需要,提供对底层方法的访问还允许您执行不常见的操作。

    作为一个你永远不知道调用者可能需要什么的库,为调用者提供可供选择的选项是非常合适的。

    大多数人永远不需要PreparedStatementSetterResultSetExtractor 版本,因此请忽略它们,但请记住它们的存在,以备不时之需。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 2012-03-24
      • 2012-03-17
      相关资源
      最近更新 更多