jdbctemplate中的query(sql,params,mapper)与queryForList(sql,params,class)区别
时间: 2024-02-05 13:12:41 浏览: 70
Java 使用JdbcTemplate 中的queryForList发生错误解决办法
5星 · 资源好评率100%
`query(sql, params, mapper)` 方法和 `queryForList(sql, params, class)` 方法都可以用于查询数据库并返回结果集,但是它们的使用方式略有不同。
`query(sql, params, mapper)` 方法需要传入一个 RowMapper 对象作为参数,用于将 ResultSet 中的每一行数据转换成 Java 对象。使用该方法需要手动编写 RowMapper 实现类来完成这个转换过程。例如:
```java
String sql = "SELECT * FROM user WHERE id=?";
User user = jdbcTemplate.queryForObject(sql, new Object[]{id}, new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setAge(rs.getInt("age"));
return user;
}
});
```
`queryForList(sql, params, class)` 方法则直接返回一个 List 集合,其中每一个元素都是指定的 Java 类型的对象。使用该方法不需要手动编写 RowMapper 实现类。例如:
```java
String sql = "SELECT * FROM user WHERE age=?";
List<User> userList = jdbcTemplate.queryForList(sql, new Object[]{age}, User.class);
```
可以看到,`queryForList()` 方法的使用更加简洁方便,适合用于查询结果集比较简单的情况;而 `query()` 方法则可以更加灵活地处理复杂的结果集,但是需要编写更多的代码。
阅读全文