JdbcTemplate中的QueryForObject和QueryForList有什么区别?

JdbcTemplate中的queryForObject()和queryForList()方法都用于执行查询,但返回结果不同:

  1. 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>() {
    // ...
});
  1. queryForList(): 返回指定类型的List,每个元素对应查询结果的一行。示例:
List<String> list = jdbcTemplate.queryForList("SELECT name FROM user", String.class);
List<User> users = jdbcTemplate.queryForList("SELECT * FROM user", new RowMapper<User>() {
    // ... 
});

所以,主要区别是:

  1. queryForObject(): 访问单行单列,返回对象或值。
  2. queryForList(): 访问多行多列,返回包含多元素的List。

选择使用queryForObject()还是queryForList(),需要根据SQL查询语句与预期结果来决定:

  • 如果查询只返回一行一列,使用queryForObject()获取对象或值结果即可。
  • 如果查询返回多行多列,使用queryForList()获取对象或值的List集合。
  • 如果查询只返回一列,可选择queryForList()获取指定类型值的List,也可选择queryForObject()获取单个值。
    这需要根据实际需求选择最合适的方法。要熟练使用JdbcTemplate,需要掌握这两个查询结果方法的区别,并根据不同场景选择调用。