1. 程式人生 > >java基礎知識總結一

java基礎知識總結一

java基礎知識總結一

  1. Map之一個Key存多個Value的MultiValueMap(一個鍵多個值)
	MultiValueMap<String, String> stringMultiValueMap = new LinkedMultiValueMap<>();
    // 新增Key為name的
    stringMultiValueMap.add("name", "yolanda");
    stringMultiValueMap.add("name", "yanzhenjie");
  1. java Stream的Collectors.groupingBy分組後的排序問題
private List<ExportAllOrder> constructDetailData(List<ExportAllOrder> listOrder) {
        final Map<Long, OrderAllGoodsSpecVo> integerOrderAllGoodsSpecVoMap = orderMapper.listAllBossOrderGoodsSpec();
        List<ExportAllOrder> groupList = new ArrayList<ExportAllOrder>();
        //主要看下面這一行,設定LinkedHashMap(有序的map),不在使用預設的HashMap(無序)
        listOrder.stream().collect(Collectors.groupingBy(ExportAllOrder::getOrderCode, LinkedHashMap::new, Collectors.toList())).forEach((orderCode, orderListByorderCode) -> {
            final int[] i = {0};
            orderListByorderCode.stream().forEach(o -> {
                //保留父訂單的資料,清空子訂單資料
                if (i[0] != 0) {
                    o.setOrderCode("");
                    o.setCustomerNickName("");
                    o.setShippingPerson("");
                    o.setShippingPhone("");
                    o.setShippingMobile("");
                    o.setShippingProvince("");
                    o.setShippingCity("");
                    o.setShippingCounty("");
                    o.setShippingAddress("");
                    o.setShippingPostcode("");
                    o.setExpressPrice(null);
                    o.setOrderPrice(null);
                    o.setCustomerRemark("");
                    o.setRemark("");
                    o.setOrderLinePay(null);
                    o.setInfoRealname("");
                    o.setWxNo("");
                    o.setOrderStatus("");
                    o.setOrderLinePayStr("");
                    o.setIsExamine("");
                    o.setAgainBuy("");
                    o.setBackOrderStatus("");
                }
                if (integerOrderAllGoodsSpecVoMap.containsKey(o.getGoodsInfoId())) {
                    o.setSpecInfo(integerOrderAllGoodsSpecVoMap.get(o.getGoodsInfoId()).getSpecInfo());
                }
                i[0]++;
                groupList.add(o);
            });
        });
        return groupList;
    }
  1. mysql的group_concat([DISTINCT] 要連線的欄位 [Order BY ASC/DESC 排序欄位] [Separator ‘分隔符’])使用
SELECT
        goods_info.goods_info_id,
        GROUP_CONCAT(goods_spec.spec_name,":",goods_info_rele_spec_detail.spec_value_remark) specInfo
      FROM
        np_goods_info goods_info
        INNER JOIN np_goods goods ON goods_info.goods_id = goods.goods_id
        INNER JOIN np_goods_info_rele_spec_detail goods_info_rele_spec_detail ON goods_info.goods_info_id = goods_info_rele_spec_detail.goods_info_id
        INNER JOIN np_goods_spec goods_spec ON goods_info_rele_spec_detail.spec_id = goods_spec.spec_id
      GROUP BY goods_info.goods_info_id;
  1. 大資料報表查詢-文章傳送們
- 先查詢資料在處理資料,不要查詢資料之後,資料不夠時在處理資料中(迴圈中)再次查詢