Java中的查询函数,返回单列中所有值的列表
我试图编写一个函数,返回表中特定用户的所有旧密码值。 但是,我不知道如何正确地格式化它Java中的查询函数,返回单列中所有值的列表,java,jdbc,Java,Jdbc,我试图编写一个函数,返回表中特定用户的所有旧密码值。 但是,我不知道如何正确地格式化它 public List<String> fetchPasswordHistory(int userId) { String query = "SELECT NEW_PASSWORD FROM PASSWORD_HISTORY WHERE USER_ID = ?"; List<String> strLst = jdbcTemplate.query(que
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;
}
}
公共列表获取密码历史记录(int userId){
String query=“从密码历史记录中选择新密码,其中用户\u ID=?”;
List strLst=jdbcTemplate.query(query,new RowMapper(){
@凌驾
公共字符串mapRow(ResultSet rs,int rowNum)引发SQLException{
返回rs.getString(3);
}
},用户ID);
if(strLst.isEmpty()){
返回null;
}
否则{
返回strLst;
}
}
这将给出表中的前3个字符串。我希望它返回从该查询生成的每个值。
然后我将比较用户的待定新密码和数据库中的所有旧密码,这样用户就不会重复密码
此外,如果查询没有返回任何内容,则会中断。
有什么帮助吗?根据我的经验,这个查询应该会失败,因为在mapRow方法中,您请求的是当前行的第3列。但是在“select”语句中,只能获得一列。因此,您应该编写rs.getString(1)(它不是基于零的,因此1将返回第一列的值)
而且,据我所知,你实际上没有把结果限制在3行。您将获得查询的所有行。mapRow将对每一行执行,您将提取密码列表。我建议返回null而不是空列表是不正确的行为。如果(strLst.isEmpty()),是否为NPE at
if(strLst.isEmpty())
?如果这样做if(null==strList | | | strLst.isEmpty())
Ok,如果我想要与该用户ID关联的每个新密码值,我应该如何格式化它?