MyBatis-Plus 之LambdaQueryWrapper 实现And/Or 查询

Posted 在奋斗的大道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis-Plus 之LambdaQueryWrapper 实现And/Or 查询相关的知识,希望对你有一定的参考价值。

今天收到房管项目经理的一个需要,在项目检测指标添加一个参数,查询符合项目名称或开发企业的所属项目信息。

LambdaQueryWrapper<BaseProject> lambda =  new LambdaQueryWrapper<BaseProject>();
lambda.eq(StringUtils.isNotEmpty(parame.getTid()), BaseProject::getTid, parame.getTid());
lambda.eq(StringUtils.isNotEmpty(parame.getPtid()), BaseProject::getPtid, parame.getPtid());
lambda.eq(StringUtils.isNotEmpty(parame.getType()), BaseProject::getType, parame.getType());
-- 核心代码:通过LambdaQueryWrapper<T> 实现and /or 查询
if(StringUtils.isNotEmpty(parame.getName()))
    lambda.and(wrapper->wrapper.like(StringUtils.isNotEmpty(parame.getName()), BaseProject::getName, parame.getName())
           .or()
           .like(StringUtils.isNotEmpty(parame.getName()), BaseProject::getDeveloperName, parame.getName())
        )

SQL 伪代码 :

select * from base_project
<where>
    <if test="bo.tid != null">
        and tid = #bo.tid
    </if>
    <if test="bo.ptid != null">
        and ptid = #bo.ptid
    </if>
     <if test="bo.type != null">
        and type = #bo.type
    </if>
    <if test="bo.name !=  null and bo.name !=''">
        and (
            name like concat('%',#bo.name,'%')
            or
            developerName like concat('%',#bo.name,'%')
        )
    </if>
</where>

以上是关于MyBatis-Plus 之LambdaQueryWrapper 实现And/Or 查询的主要内容,如果未能解决你的问题,请参考以下文章

什么?mybatis-plus的多表查询,你还在写sql语句?!CRUD2多表联查的三种方式

mybaits-plus lambdaQuery() 和 lambdaUpdate() 比较常见的使用方法

mybaits-plus lambdaQuery() 和 lambdaUpdate() 比较常见的使用方法

MyBatis-Plus之面向Mapper编程

MyBatis-Plus之面向Mapper编程

Mybatis插件之Mybatis-Plus的CRUD方法