数据库转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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值