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>

猜你喜欢

转载自blog.csdn.net/zhouzhiwengang/article/details/129421773