在使用springboot实现基于用户的协同过滤算法中的获取用户相似度矩阵的时候出现了sql语句在数据库中执行的结果和在后端执行的结果不一致的问题。
其中,后端写法如下:
public List<Map<Integer, Double>> getSimilarities(Integer userid1){//获取用户相似度矩阵
String query = "SELECT userid2,similarity FROM similarities where userid1="+userid1;
List<Map<Integer, Double>> userSimilarity = new ArrayList<>();
jdbcTemplate.query(query, rs -> {
while (rs.next()) {
int userid2 = rs.getInt("userid2");
double similarity = rs.getDouble("similarity");
// 将评分数据存入Map
Map<Integer, Double> userRatingMap = new HashMap<>();
userRatingMap.put(userid2, similarity);
// 将Map添加到List中
userSimilarity.add(userRatingMap);
}
});
return userSimilarity;
}
这个query语句在数据库里执行结果如下:

但是,在后端里打印数据库的返回结果rs的时候却只有一行!

数据库里的数据如下:

除此之外只有一个userid1,userid2的唯一键约束

