Stream流实现list动态查询

public List<CouponApartRefVo> selectCouponApartRefVoList(CouponApartRefVo couponApartRefVo) {  
    List<CouponApartRefVo> couponApartRefVos = couponApartRefMapper.selectCouponApartRefVoList(couponApartRefVo);  
    List<ApartmentAddressVo> addressVos = apartmentFeign.listApartmentAddressVo();  
    List<CouponApartRefVo> collect = couponApartRefVos.stream().map(c -> addressVos.stream()  
                    .filter(a -> (  
                            Objects.equals(c.getApartmentId(), a.getId()))  
                    ).filter(a->{  
                                if(couponApartRefVo.getApartmentName()==null||couponApartRefVo.getApartmentName().trim()==""){  
                                    return true;  
                                }else {  
                                    return a.getApartmentName().contains(couponApartRefVo.getApartmentName());  
                                }}).  
                    filter(a->{  
                        if(couponApartRefVo.getCountryName()==null||couponApartRefVo.getCountryName().trim()==""){  
                            return true;  
                        }else {  
                            return a.getCountryName().contains(couponApartRefVo.getCountryName());  
                        }}).  
                    filter(a->{  
                        if(couponApartRefVo.getCityCname()==null||couponApartRefVo.getCityCname().trim()==""){  
                            return true;  
                        }else {  
                            return a.getCityCname().contains(couponApartRefVo.getCityCname());  
                        }}).  
                    findFirst().map(i -> {  
                        c.setApartmentName(i.getApartmentName());  
                        c.setCityCname(i.getCityCname());  
                        c.setCountryName(i.getCountryName());  
                        return c;  
                    }).orElse(null))  
            .filter(Objects::nonNull).  
            collect(Collectors.toList());  
    return collect;  
}

当查询条件存在null或者“”时,不考虑该条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值