这篇文章是写给小白的,大神请略过。因为我是小白的时候踩了这样的坑,但是在网上没有找到明确的答案,都只是说让在业务代码里判空拼接,至于怎么拼接,就没有答案了。
我来简单说下吧,假如我要通过城市编码和多个品牌做筛选查看商品列表:
BoolQueryBuilder boolQueryBuilder = boolQuery().must(termQuery("cityCode",searchParams.getCityCode()) .must(termsQuery("brandIds", searchParams.getBrandIds())); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withPageable(pageable).build();
这时候如果cityCode和brandIds有为null或者为空的,就会报错,判空拼接方法如下:
BoolQueryBuilder boolQueryBuilder = boolQuery(); if (null != searchParams.getCityCode()) { boolQueryBuilder.must(termQuery("cityCode", searchParams.getCityCode())); } if (null != searchParams.getBrandIds() && !searchParams.getBrandIds().isEmpty()) { boolQueryBuilder.must(termsQuery("brandIds", searchParams.getBrandIds())); } SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withPageable(pageable).build();