‌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 官方文档

相关推荐
日月云棠1 天前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840821 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide1 天前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
IT探险家1 天前
Java 基本数据类型:8 种原始类型 + 数组 + 6 个新手必踩的坑
java
花花无缺1 天前
搞懂new 关键字(构造函数)和 .builder() 模式(建造者模式)创建对象
java
用户908324602731 天前
Spring Boot + MyBatis-Plus 多租户实战:从数据隔离到权限控制的完整方案
java·后端
桦说编程1 天前
实战分析 ConcurrentHashMap.computeIfAbsent 的锁冲突问题
java·后端·性能优化
程序员清风2 天前
用了三年AI,我总结出高效使用AI的3个习惯!
java·后端·面试
beata2 天前
Java基础-13: Java反射机制详解:原理、使用与实战示例
java·后端
用户0332126663672 天前
Java 使用 Spire.Presentation 在 PowerPoint 中添加或删除表格行与列
java