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