Java中的查询函数,返回单列中所有值的列表

时间:2017-02-28 22:38:28

标签: java jdbc

我正在尝试编写一个函数,该函数返回特定用户的表中的所有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个字符串。我希望它返回从此查询生成的每个值。 然后我将比较用户的待定新密码和数据库中的所有旧密码,以便用户不重复密码。

此外,如果查询没有返回任何内容,则会中断。 有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

根据我的经验,此查询应该失败,因为在mapRow方法中,您要求当前行的第3列。但是在“select”语句中,您只获得一列。所以,你应该写rs.getString(1)(它不是从零开始的,所以1将返回第一列的值)。

而且,据我所知,您实际上并没有将结果限制为3行。您将获得查询的所有行。将为每一行执行mapRow,您将提取密码列表。