‌MyBatis-Plus 的 LambdaQueryWrapper 可以实现 OR 条件查询‌

在 MyBatis-Plus 中,LambdaQueryWrapper 提供了链式调用的方式来构建 SQL 查询条件,其中 or() 方法用于添加 OR 条件。以下是具体用法和示例:

1. 基本 OR 条件用法

使用 or() 方法可以将后续条件与前面的条件用 OR 连接:

复制代码
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.demo.entity.User;

public class Example {
    public static void main(String[] args) {
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getName, "Alice")  // 条件1:name = 'Alice'
                   .or()
                   .eq(User::getName, "Bob");    // 条件2:OR name = 'Bob'
        
        // 生成的SQL:WHERE name = 'Alice' OR name = 'Bob'
    }
}

2. 嵌套 OR 条件

如果需要更复杂的 OR 嵌套,可以使用 nested() 方法配合 or()

复制代码
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getStatus, 1)
           .and(wrapper -> wrapper.eq(User::getName, "Alice")
                                 .or()
                                 .eq(User::getName, "Bob"));

// 生成的SQL:WHERE status = 1 AND (name = 'Alice' OR name = 'Bob')

3. 直接使用 or() 的链式调用

也可以通过多次调用 or() 实现多条件 OR:

复制代码
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getAge, 20)
           .or()
           .eq(User::getAge, 25)
           .or()
           .eq(User::getAge, 30);

// 生成的SQL:WHERE age = 20 OR age = 25 OR age = 30

关键点说明

  • ‌**or() 方法**‌:将后续条件与前一个条件用 OR 连接。
  • ‌**and() + nested()**‌:用于实现括号嵌套的逻辑组合。
  • Lambda 表达式 ‌:通过方法引用(如 User::getName)避免硬编码字段名,类型安全。

参考文档

MyBatis-Plus 官方文档对 LambdaQueryWrapper 的 OR 条件有详细说明,建议结合实际需求查阅:MyBatis-Plus 官方文档

相关推荐
云原生指北2 小时前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
java
Leinwin6 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
薛定谔的悦6 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts
enjoy嚣士7 小时前
springboot之Exel工具类
java·spring boot·后端·easyexcel·excel工具类
罗超驿7 小时前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
盐水冰8 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习
凸头8 小时前
CompletableFuture 与 Future 对比与实战示例
java·开发语言
wuqingshun3141598 小时前
线程安全需要保证几个基本特征
java·开发语言·jvm
努力也学不会java8 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
攒了一袋星辰8 小时前
高并发强一致性顺序号生成系统 -- SequenceGenerator
java·数据库·mysql