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