zoukankan      html  css  js  c++  java
  • 商品详情属性的填充

    1.业务模型

    一个商品下面 有多个 组 SpecGroup (id,cid,name) 一个组下面有多个规格参数SpecParam(id,cid,groupId,name,numeric,unit,generic,searching,segments) 

    现在通过商品id  查询到 这个商品下的组信息

    这里 我们先把 这个分类下的规格参数信息查出来 然后 可以用双层for循环 得到 这个商品的 组下的规格信息

    双层for循环比较费时间

    我们先把规格参数 变成map 类型数据    

    map的key 是  组id  ===>groupId    map的值是组下的所有参数 List<SpecParam>
    Map<Long,List<SpecParam>> map = new HashMap<>();



     public List<SpecGroup> queryGroupListByCid(Long cid){
    List<SpecGroup> groupList = this.queryGroupByCid(cid);
    //查询当前分内参数
    List<SpecParam> specParams = specParamService.querySpecParamList(null,cid,null);
    // for(SpecGroup specGroup : groupList){
    // for(SpecParam specParam : specParams){
    // if(specGroup.getId() == specParam.getGroupId()){
    //
    // }
    // }
    // }

    //1.先把规格参数变为map map的key 是groupId map的值是组下的所有参数
    Map<Long,List<SpecParam>> map = new HashMap<>();
    //遍历分类中的所有参数 如果有这个组 我们 就将当前的这个元素放到这个组里面
    如果没有这个组 我们就新建一个 以这个组id 为键 的 空的集合对象
    for(SpecParam param : specParams){
    if(!map.containsKey(param.getGroupId())){
    map.put(param.getGroupId(),new ArrayList<>());
    }
    map.get(param.getGroupId()).add(param);
    }
    // Map<Long,List<SpecParam>> specParamMap =specParams.stream().collect(Collectors.toMap(SpecParam::getGroupId,));
    // 填充param到group
    for (SpecGroup specGroup : groupList){
    specGroup.setParams(map.get(specGroup.getId()));
    }

    return groupList;
    }
  • 相关阅读:
    [收藏]15分钟内快速构建数据访问层
    asp.net 水晶报表主从表关联问题
    C#基础——关于类
    C#和Sql的时间操作心得(一)
    DataGrid导出到Word/Excel文档
    [收藏]SQL Server 索引结构及其使用
    .NET环境下水晶报表使用总结
    读写文件之日志文件
    HashTable实现购物车,抛弃数据库实现方式
    触碰心灵34句
  • 原文地址:https://www.cnblogs.com/seeworld/p/12180461.html
Copyright © 2011-2022 走看看