- 简介 (Introduction):
- 背景
需要对数据进行拼接,拼接的数据是存在两个不同的表中,但是,拼接后要作为一个对象显示,但是,这样的对象又是多个的. - 结构图
数据库模型
id name 10086 zhangsan 10087 lisi
- 背景
id | work |
10086 | teacher |
10087 | programmer |
需要结果
id | name | work |
10086 | zhangsan |
teacher |
10087 | lisi |
programmer |
-
核心
因为是在不同的数据库里,所以不能使用sql联合查询,所以只能采用List封装数据和另一个List封装数据拼接成一个结果集 -
快速上手(Getting Started)
1.创建测试数据
1 private static List<SameOr> getDemo1() { 2 3 4 List<SameOr> sameOrList = new ArrayList<>(); 5 6 SameOr sameOr = new SameOr(); 7 sameOr.setNumber("10086"); 8 sameOr.setName("zhangsan"); 9 10 SameOr sameOr2 = new SameOr(); 11 sameOr2.setNumber("10087"); 12 sameOr2.setName("lisi"); 13 14 sameOrList.add(sameOr); 15 sameOrList.add(sameOr2); 16 17 return sameOrList; 18 19 }
1 private static List<SameOr> getDemo2() { 2 3 4 List<SameOr> sameOrList = new ArrayList<>(); 5 6 SameOr sameOr = new SameOr(); 7 sameOr.setNumber("10086"); 8 9 sameOr.setSex("0"); 10 sameOr.setWork("programmer"); 11 12 SameOr sameOr2 = new SameOr(); 13 sameOr2.setNumber("10087"); 14 sameOr2.setSex("1"); 15 sameOr2.setWork("programmer"); 16 17 18 sameOrList.add(sameOr); 19 sameOrList.add(sameOr2); 20 21 return sameOrList; 22 23 }
由于业务跑在线程里,所以,不建议(基本不适用)双重for循环,所以,这里采用Map方式
1 private static void getCombineDemo2(List<SameOr> demo1, List<SameOr> demo2) { 2 HashMap<String, SameOr> map = new HashMap<>(); 3 4 for (SameOr sameOr : demo1) { 5 map.put(sameOr.getNumber(), sameOr); 6 } 7 8 9 for (SameOr sameOr : demo2) { 10 String sameOrNumber = sameOr.getNumber(); 11 SameOr sameOr1 = map.get(sameOrNumber); 12 if (sameOr1 == null) { 13 continue; 14 } 15 16 if (StringUtils.isBlank(sameOr.getName())) { 17 sameOr.setName(sameOr1.getName()); 18 } 19 20 if (StringUtils.isBlank(sameOr.getSex())) { 21 sameOr.setSex(sameOr1.getSex()); 22 } 23 24 if (StringUtils.isBlank(sameOr.getWork())) { 25 sameOr.setWork(sameOr1.getWork()); 26 } 27 28 29 } 30 31 }
3、测试结果
1 //两个数组合并成一个 2 List<SameOr> demo1 = getDemo1(); 3 List<SameOr> demo2 = getDemo2(); 4 5 6 System.out.println("创建第一个数据:"+new Gson().toJson(demo1)); 7 8 System.out.println("创建第二个数据:"+new Gson().toJson(demo2)); 9 10 getCombineDemo2(demo1, demo2); 11 12 System.out.println("结果集:"+new Gson().toJson(demo2));
4、结果展示
创建第一个数据:1 [ 2 { 3 "number":"10086", 4 "name":"zhangsan" 5 }, 6 { 7 "number":"10087", 8 "name":"lisi" 9 } 10 ]
创建第二个数据:
1 [ 2 { 3 "number":"10086", 4 "work":"programmer", 5 "sex":"0" 6 }, 7 { 8 "number":"10087", 9 "work":"programmer", 10 "sex":"1" 11 } 12 ]
1 [ 2 { 3 "number":"10086", 4 "name":"zhangsan", 5 "work":"programmer", 6 "sex":"0" 7 }, 8 { 9 "number":"10087", 10 "name":"lisi", 11 "work":"programmer", 12 "sex":"1" 13 } 14 ]
-
环境设置 (Prerequisite):
- 环境
JDK1.8 - 配置
IDEA 2019 -
存在问题
暂无
- 环境
-
进阶篇 (Advanced):
研究中 ......