JdbcTemplate提供了多种方式处理查询结果:
- 调用query()方法,返回List>结果:
List<Map<String, Object>> list = jdbcTemplate.query("SELECT * FROM table_name");
- 使用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;
}
});
- 调用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);
- 调用queryForList()返回指定类型的List:
List<String> list = jdbcTemplate.queryForList("SELECT name FROM user", String.class);
- 调用queryForRowSet()返回RowSet结果:
RowSet rowSet = jdbcTemplate.queryForRowSet("SELECT * FROM user");
- 调用queryForInt/Long等返回数值:
int count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM user", Integer.class);
所以,JdbcTemplate提供了丰富的查询结果处理方式:
- 返回List>,Map表示一行记录。
- 通过RowMapper实现类映射为指定的对象或集合。
- 调用queryForObject()返回单个对象或值。
- 调用queryForList()返回指定类型的List。
- 返回RowSet结果。
- 返回数值结果。
这需要根据不同的查询及结果将选取适合的处理方式。