Mybatis PLUS查询对List利用OR暗昧查询

[复制链接]
发表于 2025-12-20 16:33:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1、版本

   Mybatis PLUS版本:3.5.7
  留意:版本3.1.2及以下是须要return的


  • 因当前为高版本,代码中已将 return 解释。

2、代码

  1. QueryWrapper<Object> queryWrapper = new QueryWrapper<>();
  2. List<String> values = Arrays.asList("1","2");
  3. queryWrapper.and(values != null && values.size() > 0, qw -> {
  4.     values.forEach(var -> {
  5.         if(var != null && !"".equals(var)){
  6.             qw.or(sub -> sub.like("id", var));
  7.         }
  8.     });
  9.     //return qw;
  10. });
复制代码
如须要封装,代码如下:
  1. package com;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
  4. import java.util.List;
  5. public class MyLambdaQueryWrapper<T> extends LambdaQueryWrapper<T> {
  6.     public MyLambdaQueryWrapper<T> andOrLikePresent(SFunction<T, ?> column, List<?> values) {
  7.         if(null == values){
  8.             return this;
  9.         }
  10.         super.and(values != null && values.size() > 0, qw -> {
  11.             values.forEach(var -> {
  12.                 if(var != null && !"".equals(var)){
  13.                     qw.or(sub -> sub.like(column, var));
  14.                 }
  15.             });
  16.             //return qw;
  17.         });
  18.         return this;
  19.     }
  20. }
复制代码
利用如下:
  1. MyLambdaQueryWrapper<Object> wrapper = new MyLambdaQueryWrapper<>();
  2. wrapper.andOrLikePresent(Object::getID, Arrays.asList("1","2"));
复制代码


  • 当前版本Maven设置
  1. <!-- mybatisPlus -->
  2. <dependency>
  3.     <groupId>com.baomidou</groupId>
  4.     <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
  5.     <version>3.5.7</version>
  6. </dependency>
  7. <!-- 代码生成器 -->
  8. <dependency>
  9.     <groupId>com.baomidou</groupId>
  10.     <artifactId>mybatis-plus-generator</artifactId>
  11.     <version>3.5.7</version>
  12. </dependency>
  13. <!-- MyBatis 联表查询 -->
  14. <dependency>
  15.     <groupId>com.github.yulichang</groupId>
  16.     <artifactId>mybatis-plus-join-boot-starter</artifactId>
  17.     <version>1.4.10</version>
  18. </dependency>
复制代码

3、效果

  1. SELECT
  2.         id
  3.         account,
  4.         name,
  5.         status
  6. FROM
  7.         t_user
  8. WHERE
  9.         status = '1'
  10.         and ((( name like '%张三%')
  11.         or ( name like '%李四%')
  12.         or ( name like '%王五%')));
  13.        
复制代码
多个List暗昧查询
  1. SELECT
  2.         id
  3.         account,
  4.         name,
  5.         status
  6. FROM
  7.         t_user
  8. WHERE
  9.         status = '1'
  10.         and ((( account like '%zhang%')
  11.         or ( account like '%li%')
  12.         or ( account like '%wang%'))
  13.         and (( name like '%张三%')
  14.         or ( name like '%李四%')
  15.         or ( name like '%王五%')));
复制代码

OK,就这些吧。
有什么不对的还望指正,誊写不易,以为有资助就点个赞吧!☺☺☺
参考链接:

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表