例如數據庫查詢出以下類型一條一條的數據
//章排序 //單元排序 //章名稱 //單元名稱
[ 1, 1, "第一章 集合與常用邏輯用語", "1.1 集合的概念"]
[ 1, 2, "第一章 集合與常用邏輯用語", "1.2 集合間的基本關係"]
[ 1, 3, "第一章 集合與常用邏輯用語", "1.3 集合的基本運算"]
[ 2, 1, "第二章 一元二次函數、方程和不等式", "2.1 等式性質與不等式性質"]
[ 2, 2, "第二章 一元二次函數、方程和不等式", "2.2 基本不等式"]
我想轉化成
[{
"chapter" : "第一章 集合與常用邏輯用語",
"chapterOrder" : "1",
"value" : [{
"unit" : "1.1 集合的概念",
"unitOrder" : "1"
}
]
}, {
"chapter" : "第一章 集合與常用邏輯用語",
"chapterOrder" : "1",
"value" : [{
"unit" : "1.2 集合間的基本關係",
"unitOrder" : "2"
}
]
}, {
"chapter" : "第一章 集合與常用邏輯用語",
"chapterOrder" : "1",
"value" : [{
"unit" : "1.3 集合的基本運算",
"unitOrder" : "3"
}
]
}, {
"chapter" : "第二章 一元二次函數、方程和不等式",
"chapterOrder" : "2",
"value" : [{
"unit" : "2.1 等式性質與不等式性質",
"unitOrder" : "1"
}
]
}, {
"chapter" : "第二章 一元二次函數、方程和不等式",
"chapterOrder" : "2",
"value" : [{
"unit" : "2.2 基本不等式",
"unitOrder" : "2"
}
]
}
]
//java 代碼參考
public Result getFilter(HashMap paramMap , AppLoginInfo appLoginInfo ){
String gradeId = paramMap.get("gradeId") + "" ;//年級
String pharseId = paramMap.get("pharseId") + "" ;//學段
String subjectId = paramMap.get("subjectId") + "" ;//學科
String editionId = paramMap.get("editionId") + "" ;//版本
List<Object[]> objects = chapterRepository.getFilter(strParse(gradeId),strParse(pharseId),strParse(subjectId),strParse(editionId)) ;
log.info("教材串:"+JSON.toJSONString(objects));
//下面的纔是關鍵代碼,前面都是從數據庫查詢數據
TextBookVo textBookVo ;
UnitVo unitVo ;
List<TextBookVo> textBookVos = new ArrayList<>() ;
for (Object[] obj : objects){
textBookVo = new TextBookVo() ;
unitVo = new UnitVo() ;
log.info("換行之後的教材串:"+JSON.toJSONString(obj)+"\n");
textBookVo.setChapterOrder(obj[0]+"");
textBookVo.setChapter(obj[2]+"");
unitVo.setUnit(obj[3]+"");
unitVo.setUnitOrder(obj[1]+"");
textBookVo.isExist(textBookVo,unitVo) ;
textBookVos.add(textBookVo) ;
}
log.info("返回手機端的教材串:"+JSON.toJSONString(textBookVos));
return ResultUtil.show(DealTextbookFilterResultEnum.SUCCESS,textBookVos);
}
@Data
public class TextBookVo implements Serializable{
private String chapterOrder ;
private String chapter ;
private List<UnitVo> value = null ;
/**
* [1,1,"第一章 集合與常用邏輯用語","1.1 集合的概念"]
* [1,2,"第一章 集合與常用邏輯用語","1.2 集合間的基本關係"]
* [1,3,"第一章 集合與常用邏輯用語","1.3 集合的基本運算"]
*
* 將上述類型的教材封裝成
*
* [{
* "chapter" : "第一章 集合與常用邏輯用語",
* "chapterOrder" : "1",
* "value" : [{
* "unit" : "1.1 集合的概念",
* "unitOrder" : "1"
* }]
* }, {
* "chapter" : "第一章 集合與常用邏輯用語",
* "chapterOrder" : "1",
* "value" : [{
* "unit" : "1.2 集合間的基本關係",
* "unitOrder" : "2"
* }]
* }, {
* "chapter" : "第一章 集合與常用邏輯用語",
* "chapterOrder" : "1",
* "value" : [{
* "unit" : "1.3 集合的基本運算",
* "unitOrder" : "3"
* }]
* }]
* @param textBookVo
* @param unitVo
* @return
*/
public TextBookVo isExist(TextBookVo textBookVo ,UnitVo unitVo){
if (CollUtil.isEmpty(this.value)){
this.value = new ArrayList<>();
}
if (this.chapterOrder.equals(textBookVo.getChapterOrder())){
this.value.add(unitVo) ;
}
return this ;
}
}
喜歡可以測試驗證下,功能已實現。此代碼僅用作筆記,方便下次查閱。