一、需求:有這麼一張表
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iMkJWYyIzM2IjYiNDZ3ITNkJDOmFWNhF2MyY2NzITMy8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
前四個屬性當作聯合主鍵
需要把該表所有的行在前端以表格形式顯示出來,要求activityId相同時合并成一行,activityCode相同時,合并一行,activityVersion相同時也合并一行。類似這種:
二、初解決:先上來把資料庫的資料查詢出來,以List activities儲存,再存到json對象中傳回頁面。像這樣json.put("activities",activities);
到js頁面了,然後就開始蒙蔽了。本來jqeury就小白,遇到這種情況就更沒辦法了。
三、問大牛:大牛給我提供了兩種思路:我的了解是遇到這種情況可以先把資料在背景封裝成你需要的資料結構,在傳到前台,就會很好處理。
第一種:構造Map:Map>>
第二中:構造List:這種需要封裝出新的java對象.形如:List.
對象ActivityCode有List這個屬性,對象ActivityVersion有屬性List
我用的是第一種:首先轉換資料結構:
public static Map>>listToMap(
Listactivities) {
Map>> map = new HashMap>>();for(Activity detail : activities) {if (!map.containsKey(detail.getActivityCode())) {
Map> mapValue = new HashMap>();
List listValue = new ArrayList();
listValue.add(detail);
mapValue.put(detail.getActivityVersion(), listValue);
map.put(detail.getActivityCode(), mapValue);
}else{
Map> mapValue =map.get(detail
.getActivityCode());if (!mapValue.containsKey(detail.getActivityVersion())) {
List listValue = new ArrayList();
listValue.add(detail);
mapValue.put(detail.getActivityVersion(), listValue);
}else{
List mapValueList =mapValue.get(detail
.getActivityVersion());
mapValueList.add(detail);
mapValue.put(detail.getActivityVersion(), mapValueList);
}
}
}returnmap;
}
然後就jQuery周遊map就好了
四、總結:不會要多問