如何检索/存储结果集到ArrayList?

时间:2012-09-10 20:21:06

标签: jdbctemplate

如何使用JdbcTemplate.query()/ queryForList()使用namedParameter运行查询并将结果集存储到“用户”列表中?

用户类:

public class User {

    String name = null;
    String id = null;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return name;
    }
    public void setId(String id) {
        this.id = id;
    }
}

查询:

SELECT name, id FROM USERS where email=:email

我正在寻找类似的东西:

ArrayList<User> userList = jdbcTemplate.query(sql_query, 
                                              ...some_mapper..., etc);

1 个答案:

答案 0 :(得分:3)

似乎问题的答案在互联网上的某个地方无法获得。这是我发现的:

要将结果集添加到List<>,我们可以使用NamedParameterJdbcTemplate.query()函数:

NamedParameterJdbcTemplate jdbcTemplate;

ArrayList<User> usersSearchResult = (ArrayList<User>) jdbcTemplate.query(
  USER_LIST_TP_query,
  namedParameters,
  new RowMapperResultSetExtractor<User>(new UserRowMapper(), 20));

我们还必须定义自定义RowMapperResultSetExtractor,以便JDBC可以了解如何将结果集中的每一行转换为User类型。

private class UserRowMapper implements RowMapper<User> {

  public User mapRow(ResultSet rs, int rowNum) throws SQLException {
    User user = new User();

    user.setId(rs.getString("ID"));
    user.setName(rs.getString("NAME"));

    return user;
  }
}