MybatisPlus的Wrapper带条件的eq等方法的坑

MybatisPlus的Wrapper带条件的eq等方法,在不满足条件的时候也会执行后面的方法
这个方法的意思是:会执行,但是sql条件不会有

下面写法在某些值为null时会报空指针异常

LambdaQueryWrapper<PdfSplitJobPo> queryWrapper = new LambdaQueryWrapper<>();
// 如果 jobStatus.getStatusEnum() 为 null,随便 condition 不满足,但是还会报空指针异常
queryWrapper.eq(Objects.nonNull(jobStatus.getStatusEnum()), PdfSplitJobPo::getStatus, jobStatus.getStatusEnum().getStatus());
queryWrapper.eq(Objects.nonNull(jobStatus.getPdfSplitJobId()), PdfSplitJobPo::getJobId, jobStatus.getPdfSplitJobId().getJobId());
LambdaQueryWrapper<PdfSplitJobPo> queryWrapper = new LambdaQueryWrapper<>();
// 这样写不会报空指针异常
if (Objects.nonNull(jobStatus.getStatusEnum())) {
    queryWrapper.eq(PdfSplitJobPo::getStatus, jobStatus.getStatusEnum().getStatus());
}

PdfSplitJobId pdfSplitJobId = jobStatus.getPdfSplitJobId();
    if (Objects.nonNull(pdfSplitJobId)) {
	queryWrapper.eq(PdfSplitJobPo::getJobId, jobStatus.getPdfSplitJobId().getJobId());
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐