queryForObject 是 Spring 的 JdbcTemplate 类的一个方法,它用于执行一个 SQL 查询,并将结果作为一个对象返回。这个方法通常用于查询单行单列的结果,例如一个聚合函数的结果,或者是一个标量值。
以下是一些使用 queryForObject 方法的示例:
-
查询单行单列的结果:
String sql = "SELECT COUNT(*) FROM user";int count = jdbcTemplate.queryForObject(sql, Integer.class);
在这个例子中,我们查询了用户的数量,并将结果作为一个 Integer 对象返回。
-
查询返回一个自定义对象的结果:
String sql = "SELECT id, name FROM user WHERE id = ?";User user = jdbcTemplate.queryForObject(sql, new Object[]{1}, new BeanPropertyRowMapper<>(User.class));
在这个例子中,我们查询了 ID 为 1 的用户,并将结果映射到 User 类的一个实例上。
-
查询返回一个
Map的结果:String sql = "SELECT * FROM user WHERE id = ?";Map<String, Object> userMap = jdbcTemplate.queryForObject(sql, new Object[]{1}, new ColumnMapRowMapper());
在这个例子中,我们查询了 ID 为 1 的用户,并将结果存储在一个 Map 中,Map 的键是列名,值是对应的值。
注意:queryForObject 方法假定查询结果只会返回一个结果。如果查询结果返回多个结果,这个方法将抛出 IncorrectResultSizeDataAccessException 异常。如果没有找到结果,它将抛出 EmptyResultDataAccessException 异常。