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

相关推荐
云烟成雨TD6 小时前
Spring AI 1.x 系列【46】MCP Security 模块
java·人工智能·spring
CRMEB系统商城6 小时前
CRMEB多商户系统(Java)v2.3公测版发布
java·开发语言·人工智能·小程序·开源·php
sinat_255487816 小时前
第七部分。介绍MVC(模型-视图-控制器)模式
java·ide·http·tomcat·intellij-idea
李白的天不白7 小时前
ps -ef | grep java
java
ab_dg_dp7 小时前
Android 17+ 提取 AIDL 生成 Java 文件的实用脚本
android·java·python
超哥--7 小时前
B站视频内容智能分析系统(三):B站视频自动采集
java·开发语言·音视频·ai编程
郑洁文7 小时前
基于SpringBoot的商品仓库管理系统的设计与实现
java·spring boot·后端·仓库管理系统·商品仓库管理系统
布朗克1687 小时前
22 异常处理——从入门到精通的完整指南
java·异常处理
小旭95277 小时前
Spring AI Alibaba 从入门到实战:一站式掌握企业级 AI 应用开发
java·人工智能·spring
Arrom7 小时前
DLNA 渲染端排障实战:从 20s 卡顿到 stale subscriber 的两周追凶之旅
android·java