1,需求:
当我在显示表格数据时,为了保持页面友好,用数字编码的字段转换成中文显示,
但是这个转换的规则又存在另一张表中,所以我需要查询规则表信息,转换字段为map形式
显示情况
规则信息
2, 一般代码:
String sqllyfs= "select code,name from Sys_Dictionary";
Map<String, String> LyfsMap = jdbcTemplate.queryForList(sqllyfs).stream().collect(Collectors.toMap(new Function<Map<String, Object>, String>()
{
@Override
public String apply(Map<String, Object> stringObjectMap) {
return stringObjectMap.get("code").toString();
}
}, new Function<Map<String, Object>, String>() {
@Override
public String apply(Map<String, Object> stringObjectMap) {
return stringObjectMap.get("name ").toString();
}
}));
**结果形式是map:code字段为key,name字段为value
但是这种写法经常回出现一个问题,当数据库的数据是这样的时候
就会报这样的错误,
键值重复
3,改进后代码
所以修改代码为(根据code字段分组,获取第一个数据就行)
String sqlrytj= "select code,name from Sys_Dictionary";
Map<String, List<Map<String, Object>>> reportMap = jdbcTemplate.queryForList(sqlrytj).stream().collect(Collectors.groupingBy(new Function<Map<String, Object>, String>()
{
@Override
public String apply(Map<String, Object> stringObjectMap) {
return stringObjectMap.get("code").toString();
}
}));
结果形式是map:code字段为key,sql的结果值是value,以list类型保存