如何使用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);
答案 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;
}
}