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() 比较常见的使用方法