多条件查询时
如果使用这种的话,会出现只要这个条件成功了,不管你后面或者前面有没有and条件,它都成功,
可以看出来整个条件都在一个括号里面
//创建查询对象
LambdaQueryWrapper<PublishWorksRemit> wrapper = new LambdaQueryWrapper();
wrapper.eq(PublishWorksRemit::getMemberId, UserContext.getCurrentUser().getId());
wrapper.eq(PublishWorksRemit::getDeleteFlag, false);
wrapper.orderByDesc(PublishWorksRemit::getCreateTime);
//模糊查询 产品名称/款式名称/创建人
if (dto.getKeyword() != null && dto.getKeyword().length() > 0) {
// wrapper.like(PublishWorksRemit::getWorksName, dto.getKeyword())
// .or().like(PublishWorksRemit::getStyleNo, dto.getKeyword())
// .or().like(PublishWorksRemit::getCreateName, dto.getKeyword());
wrapper.and(a -> a.like(PublishWorksRemit::getWorksName, dto.getKeyword())
.or().like(PublishWorksRemit::getStyleNo, dto.getKeyword())
.or().like(PublishWorksRemit::getCreateName, dto.getKeyword())
);
}
//判断店铺id不为空
if (dto.getOnlineShopManagerId() != null && dto.getOnlineShopManagerId().length() > 0) {
wrapper.eq(PublishWorksRemit::getOnlineShopManagerId, dto.getOnlineShopManagerId());
}
//判断刊登状态不为空
if (dto.getIsExport() != null && dto.getIsExport().length() > 0) {
wrapper.eq(PublishWorksRemit::getIsExport, dto.getIsExport());
}
//判断款式id不为空
if (dto.getStyleId() != null && dto.getStyleId().length() > 0) {
//查询分类中间表
List<QrRelationshipStyleCategory> qrRelationshipStyleCategories = qrRelationshipStyleCategoryMapper.selectList(new LambdaQueryWrapper<QrRelationshipStyleCategory>().eq(QrRelationshipStyleCategory::getCategoryId, dto.getStyleId()));
//创建分类id集合
List<Long> styleCategoryIds=new ArrayList<>();
qrRelationshipStyleCategories.stream().forEach(item->{
styleCategoryIds.add(item.getStyleId());//复制款式id
});
if(styleCategoryIds.size()>0){
wrapper.in(PublishWorksRemit::getStyleId, styleCategoryIds);
}else{
wrapper.in(PublishWorksRemit::getStyleId, "");
}
}
//判断开始时间和结束时间不为空
if (dto.getStartTime() != null && dto.getEndTime() != null) {
wrapper.between(PublishWorksRemit::getCreateTime, dto.getStartTime(), dto.getEndTime());
}
但是使用这个的话,它会单独那这个条件括起来