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