一、查询表中个别字段,并将这些字段封装为键值对map的形式返回给前端
sql语句:select b.userid,b.name from table_name b where b.userid in (1,2,3);
如果对返回的结果不做任何处理,返回的结果是这样的:
[[1,"张三"],[2,"李四"],[3,"王二"]
]
理想中的结果应该是这样的:
[{"userid":1,"truename": "张三"},{"userid":2,"truename": "李四"},{"userid":3,"truename": "王二"},…
]
思路:List—>Map—>List
List<Object> list &#61; userService.findById(xxx);
List<Object> arrayList &#61; new arrayList();
for (Object obj : list) {Map<String, Object> map &#61; new HashMap<>(); Object[] arr &#61; (Object[]) obj;map.put("userid",arr[0]);map.put("name",arr[1]);arrayList.add(map);
}
此时&#xff0c;可以正常返回目标map列表。
二、若期望返回&#xff1a;
“content”: {
“广东”: 55261&#xff0c;
“浙江”&#xff1a;2000&#xff0c;
“安徽”&#xff1a;2100&#xff0c;
…
}
代码如下&#xff1a;
List<Object> organizationProvinceCountList &#61; sampleService.findGroupByOrganizationAndProvince(organizationName);Map<String, Integer> map &#61; new HashMap<>();for (Object obj : organizationProvinceCountList) {Object[] arr &#61; (Object[]) obj;if(arr[0] &#61;&#61; null || "".equals(arr[0]))map.put("未知", Integer.valueOf(arr[1].toString()));elsemap.put((String) arr[0], Integer.valueOf(arr[1].toString()));}
如果想对上述结果按照键值对的value倒序排列&#xff0c;则&#xff1a;
LinkedHashMap<String, Integer> result &#61; map.entrySet().stream().sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,LinkedHashMap::new));return JsonViewObject.success(result.entrySet().iterator().next());
参考链接&#xff1a;
http://t.zoukankan.com/BeenTogether-p-14566444.html jpa中将查询的字段返回为Map键值对类型
https://segmentfault.com/a/1190000020276225 Java8 对 Map 排序