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

迷南。 2023-10-10 16:37 136阅读 0赞

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

  1. LambdaQueryWrapper<BaseProject> lambda = new LambdaQueryWrapper<BaseProject>();
  2. lambda.eq(StringUtils.isNotEmpty(parame.getTid()), BaseProject::getTid, parame.getTid());
  3. lambda.eq(StringUtils.isNotEmpty(parame.getPtid()), BaseProject::getPtid, parame.getPtid());
  4. lambda.eq(StringUtils.isNotEmpty(parame.getType()), BaseProject::getType, parame.getType());
  5. -- 核心代码:通过LambdaQueryWrapper<T> 实现and /or 查询
  6. if(StringUtils.isNotEmpty(parame.getName())){
  7. lambda.and(wrapper->wrapper.like(StringUtils.isNotEmpty(parame.getName()), BaseProject::getName, parame.getName())
  8. .or()
  9. .like(StringUtils.isNotEmpty(parame.getName()), BaseProject::getDeveloperName, parame.getName())
  10. )
  11. }

SQL 伪代码 :

  1. select * from base_project
  2. <where>
  3. <if test="bo.tid != null">
  4. and tid = #{bo.tid}
  5. </if>
  6. <if test="bo.ptid != null">
  7. and ptid = #{bo.ptid}
  8. </if>
  9. <if test="bo.type != null">
  10. and type = #{bo.type}
  11. </if>
  12. <if test="bo.name != null and bo.name !=''">
  13. and (
  14. name like concat('%',#{bo.name},'%')
  15. or
  16. developerName like concat('%',#{bo.name},'%')
  17. )
  18. </if>
  19. </where>

发表评论

表情:
评论列表 (有 0 条评论,136人围观)

还没有评论,来说两句吧...

相关阅读