JdbcTemplate中的queryForObject()和queryForList()方法都用于执行查询,但返回结果不同:
- queryForObject(): 返回单个对象或值。适用于返回一行一列的查询。示例:
String name = jdbcTemplate.queryForObject("SELECT name FROM user WHERE id = ?", new Object[]{10}, String.class);
User user = jdbcTemplate.queryForObject("SELECT * FROM user WHERE id = ?", new Object[]{10}, new RowMapper<User>() {
// ...
});
- queryForList(): 返回指定类型的List,每个元素对应查询结果的一行。示例:
List<String> list = jdbcTemplate.queryForList("SELECT name FROM user", String.class);
List<User> users = jdbcTemplate.queryForList("SELECT * FROM user", new RowMapper<User>() {
// ...
});
所以,主要区别是:
- queryForObject(): 访问单行单列,返回对象或值。
- queryForList(): 访问多行多列,返回包含多元素的List。
选择使用queryForObject()还是queryForList(),需要根据SQL查询语句与预期结果来决定:
- 如果查询只返回一行一列,使用queryForObject()获取对象或值结果即可。
- 如果查询返回多行多列,使用queryForList()获取对象或值的List集合。
- 如果查询只返回一列,可选择queryForList()获取指定类型值的List,也可选择queryForObject()获取单个值。
这需要根据实际需求选择最合适的方法。要熟练使用JdbcTemplate,需要掌握这两个查询结果方法的区别,并根据不同场景选择调用。