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
异常。