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