mybatis plus 根据要求构建sql wrapper

文章目录

要求: 构建sql wrapper

java 复制代码
根据要求构建sql wrapper:
	dto.getProjectId() == null,则 where project_id is null
    dto.getProjectId() != null,则 where project_id ='58b1fad6-adaa-4834-8337-8d438346783a'

错误写法

java 复制代码
 PropertyEntity property = propertyManager.getOne(
                    Wrappers.<PropertyEntity>lambdaQuery()
                            .eq(Objects.nonNull(dto.getProjectId()), PropertyEntity::getProjectId, dto.getProjectId())
                            .eq(StringUtils.isNotEmpty(dto.getCode()), PropertyEntity::getCode, dto.getCode())
                            .eq(StringUtils.isNotEmpty(dto.getName()), PropertyEntity::getName, dto.getName()));

原因: dto.getProjectId() == null,构建的sql是:where project_id = 'null'

解决方案

java 复制代码
  LambdaQueryWrapper<PropertyEntity> wrapper = Wrappers.lambdaQuery(PropertyEntity.class);
            if (dto.getProjectId() == null) {
                wrapper.isNull(PropertyEntity::getProjectId);
            } else {
                wrapper.eq(PropertyEntity::getProjectId, dto.getProjectId());
            }
            wrapper.eq(StringUtils.isNotEmpty(dto.getCode()), PropertyEntity::getCode, dto.getCode())
                    .eq(StringUtils.isNotEmpty(dto.getName()), PropertyEntity::getName, dto.getName());
            PropertyEntity property = propertyManager.getOne(wrapper);
相关推荐
amao998813 分钟前
数据库原理与技术 - 3-5 SQL查询训练(习题)
数据库·sql
程序员Null的自我修养25 分钟前
全面整理Redis过期删除与内存淘汰策略底层原理机制
数据库·redis
Wang15301 小时前
Java网络IO模型
java
人道领域1 小时前
【零基础学java】(补充可变参数和Collections)
java·intellij-idea
夏幻灵1 小时前
【Java进阶】面向对象编程第一站:深入理解类、对象与封装前言
java·开发语言
nsjqj1 小时前
JavaEE初阶:多线程(1)
java·开发语言·jvm
0xwang1 小时前
maven scope引起的程序崩溃
java·maven
编程饭碗1 小时前
【Java 类的完整组成】
java·开发语言·python
陌路201 小时前
MYSQL索引篇--基础知识
数据库·mysql
酸菜牛肉汤面2 小时前
29、主键使用自增ID还是UUID?
数据库