我正在查看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。答案 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;
}