JdbcTemplate中的两个queryForObject方法

时间:2017-11-04 03:38:56

标签: java spring spring-mvc jdbc spring-jdbc

我正在查看Spring文档。在 Class JdbcTemplate 页面,我有点困惑,因为看起来这两种方法正在做同样的事情。它们的目的是返回由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的方法用于返回仅由SQL结果形成的对象。

使用RowMapper的方法允许我们这样做 1.返回由SQL结果形成的对象,我们不需要结果中类的每个变量 2.在分配给结果对象之前进行复杂的验证或格式化,这可以在java中轻松完成而不是在SQL

中完成 谢谢Raghu。

如果有人有更多的见解,请去吧。我非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

一个用例就是使用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;  
}