JdbcTemplate如何处理查询结果?

JdbcTemplate提供了多种方式处理查询结果:

  1. 调用query()方法,返回List>结果:
List<Map<String, Object>> list = jdbcTemplate.query("SELECT * FROM table_name");
  1. 使用RowMapper实现类,映射成需要的对象:
List<User> users = jdbcTemplate.query("SELECT * FROM user", new RowMapper<User>() {
    public User mapRow(ResultSet rs, int rowNum) throws SQLException {
        User user = new User();
        user.setId(rs.getInt("id"));
        user.setName(rs.getString("name"));
        return user;
    }
});
  1. 调用queryForObject()返回单个对象或值:
User user = jdbcTemplate.queryForObject("SELECT * FROM user WHERE id = ?", new Object[]{10}, new RowMapper<User>() {
    // ...
});

String name = jdbcTemplate.queryForObject("SELECT name FROM user WHERE id = ?", new Object[]{10}, String.class); 
  1. 调用queryForList()返回指定类型的List:
List<String> list = jdbcTemplate.queryForList("SELECT name FROM user", String.class);
  1. 调用queryForRowSet()返回RowSet结果:
RowSet rowSet = jdbcTemplate.queryForRowSet("SELECT * FROM user"); 
  1. 调用queryForInt/Long等返回数值:
int count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM user", Integer.class);

所以,JdbcTemplate提供了丰富的查询结果处理方式:

  1. 返回List>,Map表示一行记录。
  2. 通过RowMapper实现类映射为指定的对象或集合。
  3. 调用queryForObject()返回单个对象或值。
  4. 调用queryForList()返回指定类型的List。
  5. 返回RowSet结果。
  6. 返回数值结果。

这需要根据不同的查询及结果将选取适合的处理方式。