当前位置: 首页 > article >正文

Mybatis PLUS查询对List使用OR模糊查询

Mybatis PLUS查询对List使用OR模糊查询

  • 1、版本
  • 2、代码
  • 3、效果

1、版本

Mybatis PLUS版本:3.5.7

注意:版本3.1.2及以下是需要return的

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

2、代码

QueryWrapper<Object> queryWrapper = new QueryWrapper<>();
List<String> values = Arrays.asList("1","2");
queryWrapper.and(values != null && values.size() > 0, qw -> {
    values.forEach(var -> {
        if(var != null && !"".equals(var)){
            qw.or(sub -> sub.like("id", var));
        }
    });
    //return qw;
});

如需要封装,代码如下:

package com;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import java.util.List;

public class MyLambdaQueryWrapper<T> extends LambdaQueryWrapper<T> {

    public MyLambdaQueryWrapper<T> andOrLikePresent(SFunction<T, ?> column, List<?> values) {
        if(null == values){
            return this;
        }
        super.and(values != null && values.size() > 0, qw -> {
            values.forEach(var -> {
                if(var != null && !"".equals(var)){
                    qw.or(sub -> sub.like(column, var));
                }
            });
            //return qw;
        });
        return this;
    }

}

使用如下:

MyLambdaQueryWrapper<Object> wrapper = new MyLambdaQueryWrapper<>();
wrapper.andOrLikePresent(Object::getID, Arrays.asList("1","2"));
  • 当前版本Maven配置
<!-- mybatisPlus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.7</version>
</dependency>
<!-- 代码生成器 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId> 
    <version>3.5.7</version>
</dependency>
<!-- MyBatis 联表查询 -->
<dependency>
    <groupId>com.github.yulichang</groupId>
    <artifactId>mybatis-plus-join-boot-starter</artifactId>
    <version>1.4.10</version>
</dependency>

3、效果

SELECT
	id
	account,
	name,
	status
FROM
	t_user
WHERE
	status = '1'
	and ((( name like '%张三%')
	or ( name like '%李四%')
	or ( name like '%王五%')));
	

多个List模糊查询

SELECT
	id
	account,
	name,
	status
FROM
	t_user
WHERE
	status = '1'
	and ((( account like '%zhang%')
	or ( account like '%li%')
	or ( account like '%wang%'))
	and (( name like '%张三%')
	or ( name like '%李四%')
	or ( name like '%王五%')));

OK,就这些吧。
有什么不对的还望指正,书写不易,觉得有帮助就点个赞吧!☺☺☺

参考链接:
https://www.cnblogs.com/lboke/p/17146689.html


http://www.kler.cn/a/409843.html

相关文章:

  • 最新SQL Server 2022保姆级安装教程【附安装包】
  • 【计算机网络】网段划分
  • 监控报警系统的指标、规则与执行闭环
  • 如何定位 Mysql 负载高
  • 【kubernetes】kubernetes简介
  • Docker安装ubuntu1604
  • 读《Effective Java》笔记 - 条目7
  • C#基础控制台程序
  • stable Diffusion官方模型下载
  • 软件工程设计模式--结构型设计模式
  • 如何使用 PyCharm 工具连接远程服务器进行开发
  • Flume和kafka的整合:使用Flume将日志数据抽取到Kafka中
  • 打造智能化在线教育平台详解:教培网校APP的架构设计与实现
  • 【深度学习】【RKNN】【C++】模型转化、环境搭建以及模型部署的详细教程
  • 使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集
  • 数据库连接池调优——可视化查询慢SQL利器
  • 1.Excel文本函数的使用
  • 通过map文件了解堆栈分配(STM32、MDK5)--避免堆栈溢出
  • 数学知识1
  • ubity3D基础
  • pytorchDay33
  • 【漏洞复现】CVE-2020-1956
  • 在接口实现时使用自定义对象的方法(非工具类,和单例模式)
  • Java中三种常用布局方式
  • Vue报错:error Mixed spaces and tabs no-mixed-spaces-and-tabs——报错处理
  • 神经网络归一化方法总结