我们有
String sql = "SELECT * FROM user WHERE id = '" +userId +"'";
List<Object> userList = template.queryForList(sql);
查询应返回具有给定 ID 的不同用户。
template
是 JdbcTemplate
的对象类。
此处查询返回 Map<String,Object>
的列表左边是List<Object>
.有没有办法进行转换。这是 spring 事务管理示例的一部分。
最佳答案
您始终只能使用 values
您首先感兴趣的是:
List<Object> userList = new ArrayList<Object>(template.queryForList(sql).values());
如果它返回 List<Map<String, Object>>
而不是 Map<String,Object>
:
List < Object > userList = new ArrayList < Object > ();
for (Map < String, Object > obj: template.queryForList(sql)) {
userList.addAll(obj.values());
}
这应该给你一个 Object
的列表如你所愿。如果你需要探索为什么Map.values()
不能直接转换为列表,我们需要创建一个新的 ArrayList
为此目的可以在这里找到:why HashMap Values are not cast in List
关于java - 类型不匹配 : cannot convert from List<Map<String, Object>> 到 List<Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34597060/