數據庫轉map類型的list集合以及組合查詢

在這裏插入圖片描述
在數據庫中brand_ids存儲的是字符串類型,我們在後端查詢出來的結果也是字符串類型,也就是說我們在後端編輯器裏無法對這些map類型的list集合字符串進行list或map操作
但這並不影響前端展示這些數據,我們只需要把這些數據以字符串的形式或者整個表返回給前端
前端頁面將json格式的字符串數組轉化成json對象,之後就可以就進行遍歷

$scope.list = JSON.parse(resp.brandIds);

那後端如何將map集合類型的字符串轉化成List<Map ?

List<Map> maps = JSON.parseArray(tbTypeTemplate.getBrandIds(), Map.class);

在這裏插入圖片描述
在這裏插入圖片描述
前端要求的返回數據格式:

[{"options":[{"id":98,"optionName":"移動3G","orders":1,"specId":27},{"id":99,"optionName":"移動4G","orders":
2,"specId":27},{"id":100,"optionName":"聯通3G","orders":3,"specId":27},{"id":101,"optionName":"聯通4G",
"orders":4,"specId":27},{"id":112,"optionName":"電信3G","orders":5,"specId":27},{"id":113,"optionName":
"電信4G","orders":6,"specId":27},{"id":114,"optionName":"移動2G","orders":7,"specId":27},{"id":115,
"optionName":"聯通2G","orders":8,"specId":27},{"id":116,"optionName":"電信2G","orders":9,"specId":27},
{"id":117,"optionName":"雙卡","orders":10,"specId":27}],"id":27,"text":"網絡"},{"options":[{"id":118,
"optionName":"16G","orders":1,"specId":32},{"id":119,"optionName":"32G","orders":2,"specId":32},
{"id":120,"optionName":"64G","orders":3,"specId":32},{"id":121,"optionName":"128G","orders":4,"specId":32}],"id":32,
"text":"機身內存"}]

json形式
在這裏插入圖片描述
數據庫中的數據類型
在這裏插入圖片描述
由以上我們發現我們只需要把數據庫中查詢出來的spec_ids,由字符串轉化成List<Map,再向其中加入一個鍵爲options,值爲map數據類型的集合即可
service層代碼

public List<Map> findSpecAndOptionsByTypeTemplateId(Long typeTemplateId) {
	TbTypeTemplate tbTypeTemplate = typeTemplateMapper.selectByPrimaryKey(typeTemplateId);
	// List的格式:[{"id":26,"text":"尺碼"},{"id":29,"text":"顏色"}]
	List<Map> maps = JSON.parseArray(tbTypeTemplate.getSpecIds(), Map.class);
	// map的格式:{"id":26,"text":"尺碼"}
	for (Map map : maps) {

		TbSpecificationOptionExample example = new TbSpecificationOptionExample();
		TbSpecificationOptionExample.Criteria criteria = example.createCriteria();
		criteria.andSpecIdEqualTo(Long.parseLong(map.get("id")+""));
		List<TbSpecificationOption> specificationOptions = specificationOptionMapper.selectByExample(example);
		map.put("options",specificationOptions);
		// map的新格式變爲:{"id":26,"text":"尺碼", "options": [{id: 24, optionName: ""56寸}]}
	}
	return maps;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章