JdbcTemplate 中的两个 queryForObject 方法

two queryForObject methods in JdbcTemplate

我正在查看 Spring 文档。在 Class JdbcTemplate 页面,我有点困惑,因为这两种方法似乎在做同样的事情。它们的目的都是return一个由SQL结果形成的对象。

<T> T queryForObject(java.lang.String sql, 
                     java.lang.Object[] args, 
                     RowMapper<T> rowMapper)

查询给定 SQL 从 SQL 创建准备好的语句和要绑定到查询的参数列表,通过 RowMapper 将单个结果行映射到 Java 对象.

<T> T queryForObject(java.lang.String sql, 
                     java.lang.Object[] args, 
                     java.lang.Class<T> requiredType)

给定的查询 SQL 从 SQL 和要绑定到查询的参数列表创建准备好的语句,期望结果对象。

问题

他们的目的和我理解的一样吗?

如果是这样,为什么我们需要这两种方法?

如果不是,它们之间有什么区别?他们每个人都有一个典型的场景吗?

回答

所以从我们现在得到的答案来看。

具有 requiredType 的方法仅用于 returning 由 SQL 结果形成的对象。

RowMapper 的方法允许我们 1. returning 一个由 SQL 结果形成的对象,我们不需要结果中 class 的每个变量 2. 在分配给结果对象之前进行复杂的验证或格式化,这在 java 中比在 SQL

中更容易完成

谢谢拉格。

如果有谁有更深入的了解,请继续。非常感谢您的帮助。

一个用例是使用 rowMapper 我们可以自定义结果对象准备。

 @Override  
  public Employee mapRow(ResultSet rs, int rownumber) throws SQLException {  
    Employee e=new Employee();  
    e.setId(rs.getInt(1));  
    e.setName(rs.getString(2));  
    e.setSalary(rs.getInt(3));
    //e.someNonSetterMethod(customize(rs.getString(4)));
    return e;  
}