Loading... ## Java使用MyBatis-Plus的OR条件查询 MyBatis-Plus 是 MyBatis 的增强工具,旨在简化开发,提升开发效率。它提供了许多开箱即用的功能,其中之一便是条件构造器(Wrapper),能够方便地进行复杂的条件查询。本文将详细介绍如何在 MyBatis-Plus 中使用 OR 条件进行查询。 ![](https://www.8kiz.cn/usr/uploads/2024/07/3694430650.png) ### 1. 环境准备 首先,确保你的项目已经集成了 MyBatis-Plus。以下是一个简单的 Maven 依赖配置: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.4</version> </dependency> ``` ### 2. 实体类和 Mapper 接口 假设我们有一个用户实体类 `User` 和相应的 Mapper 接口: #### User 实体类 ```java package com.example.demo.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("user") public class User { @TableId private Long id; private String name; private Integer age; private String email; } ``` #### UserMapper 接口 ```java package com.example.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.demo.entity.User; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserMapper extends BaseMapper<User> { } ``` ### 3. 条件查询 MyBatis-Plus 提供了 `QueryWrapper` 和 `LambdaQueryWrapper` 两种方式来构造查询条件。这里主要介绍如何使用 `QueryWrapper` 实现 OR 条件查询。 #### 使用 QueryWrapper `QueryWrapper` 是一个通用的条件构造器,可以方便地进行条件拼接。以下示例展示了如何使用 OR 条件查询用户: ```java package com.example.demo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.demo.entity.User; import com.example.demo.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import java.util.List; @Component public class MyBatisPlusExample implements CommandLineRunner { @Autowired private UserMapper userMapper; @Override public void run(String... args) throws Exception { QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("age", 25).or().eq("name", "John"); List<User> users = userMapper.selectList(queryWrapper); users.forEach(System.out::println); } } ``` 在上述代码中,`queryWrapper.eq("age", 25).or().eq("name", "John")` 构造了一个 OR 条件,表示查询年龄为25或名字为John的用户。 #### 使用 LambdaQueryWrapper `LambdaQueryWrapper` 提供了类型安全的条件构造方式,更加简洁和安全。以下是使用 `LambdaQueryWrapper` 实现相同 OR 条件查询的示例: ```java package com.example.demo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.example.demo.entity.User; import com.example.demo.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import java.util.List; @Component public class MyBatisPlusExample implements CommandLineRunner { @Autowired private UserMapper userMapper; @Override public void run(String... args) throws Exception { LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(User::getAge, 25).or().eq(User::getName, "John"); List<User> users = userMapper.selectList(lambdaQueryWrapper); users.forEach(System.out::println); } } ``` ### 4. 组合复杂查询 MyBatis-Plus 支持任意复杂的查询条件组合,以下示例展示了如何组合多个 AND 和 OR 条件: ```java package com.example.demo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.example.demo.entity.User; import com.example.demo.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import java.util.List; @Component public class MyBatisPlusExample implements CommandLineRunner { @Autowired private UserMapper userMapper; @Override public void run(String... args) throws Exception { LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper .eq(User::getAge, 25) .or(wrapper -> wrapper.eq(User::getName, "John").eq(User::getEmail, "john@example.com")); List<User> users = userMapper.selectList(lambdaQueryWrapper); users.forEach(System.out::println); } } ``` 在这个示例中,查询条件为:年龄为25或名字为John且邮箱为john@example.com的用户。 ### 思维导图 ```plaintext - MyBatis-Plus的OR条件查询 - 环境准备 - Maven依赖 - 实体类和Mapper接口 - User实体类 - UserMapper接口 - 条件查询 - 使用QueryWrapper - 使用LambdaQueryWrapper - 组合复杂查询 ``` ### 结论 通过MyBatis-Plus的条件构造器,Java开发者可以方便地进行复杂的查询条件组合,包括AND和OR条件的灵活使用。熟练掌握这些技巧,可以显著提升开发效率和代码可读性。 最后修改:2024 年 07 月 20 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏