JAVA将Id相同数据中重复列转化成一条

在数据库中查询数据为以下表格,想转换为json

id:20170719,name:李四,code:“1001”,“1002”,“1003”

所以需要将code合并


idnamecode
20170719李四1001
20170719李四1002
20170719李四1003
20170718王五1001
20170718王五1002
20170718王五1003

思路如下

已知code固定为1001,1002,1003 将这些code存到itemList里
定义这个数据库查出来的数据为totalList
建立一个这种数据的VO 属性为 id,name,code
建立一个返回类型VO2 属性为id,name,status

开始先将totalList去重 得到 lessList数据如下

idnamecode
20170719李四1001
20170718王五1003

在这个小的list里循环,将VO的id,name赋值
同样在这个循环里建立一个双重循环,lessList和itemList
itemList的循环里赋值code给VO 这样就得到了一个VO对象
使用list的contains方法来判断totalList存在这个VO对象则将这个code并给予标识,如果没有给予另一个标识
即通过自己建立的一个对象来在总的数据里查找是否存在

代码块

大致代码如下:

for(VO vo :lessList){

            // 筛查编号
            vo.setId();
            vo2.setId();
            // 获取姓名
            vo.setName();
            vo2.setId();            
            // 存放状态
            Map<String, Object> status = new HashMap<String, Object>();
            for(int i = 0; i<lessList.size(); i++){
                for(int j =0; j<itemList.size();j++){
                    vo.setCode(itemList.get(j));
                    if(totalList.contains(masterTemplateVO)){
                        // 1为做过项目
                        status.put(itemList.get(j),1);
                    }else{
                        // 0未做过项目
                        status.put(itemList.get(j),0);
                    }
                }
            }
            vo2.setStatus(JsonUtils.toJson(status));
            voList.add(vo2);
        }

更新 2017-7-20
发现mysql内置函数 GROUP_CONCAT(列)可以直接将重复的放在一行,用逗号拼接。

MYsql内置长度为1024 通过在查询窗口运行以下两行数据将拼接长度设置为最大,需重启mysql

SET GLOBAL group_concat_max_len=-1;

SET SESSION group_concat_max_len=-1;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值