我正在尝试编写一个函数,该函数返回特定用户的表中的所有old_password值。 但是,我不知道如何正确地格式化它。
public List<String> fetchPasswordHistory(int userId) {
String query = "SELECT NEW_PASSWORD FROM PASSWORD_HISTORY WHERE USER_ID = ?";
List<String> strLst = jdbcTemplate.query(query,new RowMapper<String>() {
@Override
public String mapRow(ResultSet rs, int rowNum) throws SQLException {
return rs.getString(3);
}
}, userId);
if ( strLst.isEmpty() ) {
return null;
}
else {
return strLst;
}
}
这将给出表格中的前3个字符串。我希望它返回从此查询生成的每个值。 然后我将比较用户的待定新密码和数据库中的所有旧密码,以便用户不重复密码。
此外,如果查询没有返回任何内容,则会中断。 有什么帮助吗?
答案 0 :(得分:0)
根据我的经验,此查询应该失败,因为在mapRow方法中,您要求当前行的第3列。但是在“select”语句中,您只获得一列。所以,你应该写rs.getString(1)(它不是从零开始的,所以1将返回第一列的值)。
而且,据我所知,您实际上并没有将结果限制为3行。您将获得查询的所有行。将为每一行执行mapRow,您将提取密码列表。