mybatis-plus多个条件查询
时间: 2023-03-20 13:06:49 浏览: 1693
mybatis-plus可以通过Wrapper类来实现多个条件查询。Wrapper类是一个抽象类,它提供了很多方法来构建查询条件,比如eq、ne、like、in等等。我们可以通过链式调用这些方法来构建复杂的查询条件。例如:
```
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 18)
.like("name", "张")
.in("status", 1, 2, 3);
List<User> userList = userMapper.selectList(wrapper);
```
这个例子中,我们构建了一个查询条件,查询年龄为18,名字包含“张”,状态为1、2或3的用户列表。我们可以根据实际需求来构建不同的查询条件。
相关问题
mybatis-plus模糊+条件查询
Mybatis-Plus的模糊查询可以使用`like`方法,可以结合Lambda条件构造器进行条件查询。
示例代码如下:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "张"); // 模糊查询name字段中包含“张”的记录
queryWrapper.eq("status", 1); // 筛选status字段等于1的记录
List<User> userList = userMapper.selectList(queryWrapper);
```
上述代码中使用`like`方法进行模糊查询,其中第一个参数为要查询的字段名,第二个参数为要匹配的模糊字符串。
同时,结合Lambda条件构造器进行条件查询,`eq`方法表示相等查询。
更多Mybatis-Plus的查询方法可以参考官方文档:https://baomidou.com/guide/wrapper.html#lambda%E6%9D%A1%E4%BB%B6%E6%9E%84%E9%80%A0%E5%99%A8
mybatis-plus怎么使用条件查询
### MyBatis-Plus 条件查询使用教程
MyBatis-Plus 是一款强大的 ORM 工具,提供了丰富的条件构造器来帮助开发者构建灵活的 SQL 查询语句。以下是关于如何在 MyBatis-Plus 中实现条件查询的具体说明。
#### 1. 条件查询的核心类
MyBatis-Plus 提供了 `QueryWrapper` 和 `LambdaQueryWrapper` 两个主要的条件构造器类[^3]。
- **QueryWrapper**: 支持通过字段名字符串的方式构建查询条件。
- **LambdaQueryWrapper**: 基于 Lambda 表达式,可以避免硬编码字段名称,减少拼写错误的风险。
#### 2. 创建条件查询对象
可以通过实例化 `QueryWrapper` 或 `LambdaQueryWrapper` 类创建条件查询对象。例如:
```java
// 使用 QueryWrapper 构建条件查询
QueryWrapper<Teacher> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 30).like("name", "张");
// 使用 LambdaQueryWrapper 构建条件查询
LambdaQueryWrapper<Teacher> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(Teacher::getAge, 30).like(Teacher::getName, "张");
```
以上代码分别展示了如何通过 `QueryWrapper` 和 `LambdaQueryWrapper` 设置相等 (`eq`) 和模糊匹配 (`like`) 的查询条件。
#### 3. 执行条件查询
调用 Mapper 接口中的方法执行查询操作。通常会使用 `selectList` 方法获取符合条件的结果列表。
```java
// 调用 selectList 方法执行查询
List<Teacher> teacherList = mybatisPlusTestMapper.selectList(queryWrapper);
System.out.println(teacherList);
// 如果使用 LambdaQueryWrapper,则替换为对应的 Wrapper 对象即可
List<Teacher> teacherListByLambda = mybatisPlusTestMapper.selectList(lambdaQueryWrapper);
System.out.println(teacherListByLambda);
```
此部分代码演示了如何利用条件查询对象从数据库中检索数据[^3]。
#### 4. 高级条件组合
除了简单的等于和模糊匹配外,还可以通过链式调用来组合更复杂的查询逻辑。例如:
```java
LambdaQueryWrapper<Teacher> complexWrapper = new LambdaQueryWrapper<>();
complexWrapper.ge(Teacher::getSalary, 5000) // 大于等于某值
.lt(Teacher::getAge, 40) // 小于某值
.orderByDesc(Teacher::getId); // 按照 ID 字段降序排列
List<Teacher> resultList = mybatisPlusTestMapper.selectList(complexWrapper);
```
这段代码实现了对教师表按照薪资大于等于 5000、年龄小于 40 的筛选,并按主键降序排序的功能。
---
#### 注意事项
- 确保实体类属性与数据库字段映射关系正确无误。
- 当涉及多表联查时,可考虑引入第三方插件如 MyBatis-Plus Join[^4],进一步优化复杂场景下的性能表现。
阅读全文
相关推荐














