mybatis-plus LambdaQueryWrapper之判断值是否存在,存在则加入查询,反之亦然
·
需求如下:
如果:如果设置值的时候,值为空则不执行查询语句
代码:
当isDeleted为null的时候
@Test
void method() {
Integer isDeleted = null;
LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(!ObjectUtils.isEmpty(isDeleted),DeviceBrand::getIsDeleted,isDeleted);
log.info(String.valueOf(queryWrapper));
}
调试结果:
此时expression里面的normal size == 0
当isDeleted为1的时候
@Test
void method() {
Integer isDeleted = 1;
LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(!ObjectUtils.isEmpty(isDeleted),DeviceBrand::getIsDeleted,isDeleted);
log.info(String.valueOf(queryWrapper));
}
此时expression里面的normal size == 3
于是乎我翻了一下mybatis-plus源码
protected Children addCondition(boolean condition, R column, SqlKeyword sqlKeyword, Object val) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(column), sqlKeyword,
() -> formatParam(null, val)));
}
protected final Children maybeDo(boolean condition, DoSomething something) {
if (condition) {
something.doIt();
}
return typedThis;
}
如果condition为 true则执行右边的函数,为false则反之
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)