Java 数据库结果集转换成map类型 重复键值 Collectors.groupingBy

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类型保存

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值