JAVA将Id相同数据中重复列转化成⼀条
在数据库中查询数据为以下表格,想转换为json
id:20170719,name:李四,code:“1001”,“1002”,“1003”
所以需要将code合并
id name code 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数据如下
id name code 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++){mysql删除重复的数据保留一条
vo.(j));
ains(masterTemplateVO)){
// 1为做过项⽬
status.(j),1);
}else{
// 0未做过项⽬
status.(j),0);
}
}
}
vo2.Json(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;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。