- 簡介 (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):
研究中 ......