JdbcTemplate提供了queryForObject()和queryForList()两种方法执行查询,主要区别如下:
queryForObject():
- 执行查询语句,返回单行单列结果。
- 典型的场景是执行聚合函数查询,如count()等。
- 返回Object,需要传入对应的RowMapper实现或ResultSetExtractor。
queryForList():
- 执行查询语句,返回多行结果。
- 返回List,T是RowMapper映射的类型,通常为Entity。
- 适用于比较普通的多行记录查询。
代码示例:
queryForObject():
String sql = "SELECT count(*) FROM user";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
- 执行单行单列count(*)查询
- 返回Integer
- 传入ResultSetExtractor或RowMapper
String sql = "SELECT name FROM user WHERE id = ?";
String name = jdbcTemplate.queryForObject(sql, String.class, 1);
- 执行单行单列name查询
- 返回String
- 传入对应的参数值
queryForList():
String sql = "SELECT * FROM user";
List<User> users = jdbcTemplate.queryForList(sql, User.class);
- 执行普通多行查询
- 返回List,User是实体类
- 无需指定RowMapper,使用BeanPropertyRowMapper映射User
所以,主要区别在于:
queryForObject():返回单个值,用于聚合函数或单行单列查询。
queryForList():返回List,用于普通的多行记录查询。