mybatisPlus条件构造器or的用法
时间: 2024-10-20 09:13:23 浏览: 177
在MyBatisPlus的条件构造器(如`LambdaQueryWrapper`)中,`or()`方法用于添加一个或多个条件的逻辑“或”操作。它允许你组合多个查询条件,表示至少满足其中一个条件的数据将被返回。
例如,如果你需要查询订单表中,状态为已支付(`paid`)或者未发货(`notShipped`)的记录,你可以这样做:
```java
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.entity.EntityWrapper;
EntityWrapper<Order> wrapper = new EntityWrapper<>();
wrapper.or() // 开始添加第一个或条件
.eq("status", "已支付")
.or() // 添加第二个或条件
.eq("status", "未发货");
List<Order> orders = orderMapper.selectList(wrapper); // 查询满足任意一个条件的订单
```
这里的`or()`方法会生成类似 "status in ('已支付', '未发货')" 的SQL表达式。
相关问题
mybatisplus条件构造器使用
MyBatis-Plus 的条件构造器可以让我们在进行数据库操作时,更加方便快捷地构建 SQL 语句,具有以下特点:
- 支持链式调用
- 友好的 API
- 安全的 SQL 拼接
- 支持 lambda 表达式
- 支持自定义 SQL 片段
下面是 MyBatis-Plus 条件构造器的使用方法:
1. 导入 MyBatis-Plus 的依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
```
2. 创建 QueryWrapper 对象:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
```
3. 添加查询条件:
```java
// eq 等于
queryWrapper.eq("name", "张三");
// ne 不等于
queryWrapper.ne("age", 18);
// gt 大于
queryWrapper.gt("age", 20);
// ge 大于等于
queryWrapper.ge("age", 18);
// lt 小于
queryWrapper.lt("age", 30);
// le 小于等于
queryWrapper.le("age", 30);
// between 区间查询
queryWrapper.between("age", 18, 30);
// like 模糊查询
queryWrapper.like("name", "张");
// or 或者
queryWrapper.or(wrapper -> wrapper.eq("age", 18).ne("name", "张三"));
// in 包含
queryWrapper.in("age", Arrays.asList(18, 20, 22));
// notIn 不包含
queryWrapper.notIn("age", Arrays.asList(24, 26, 28));
// isNull 空
queryWrapper.isNull("email");
// isNotNull 非空
queryWrapper.isNotNull("email");
// orderBy 排序
queryWrapper.orderByDesc("age");
// last 拼接 SQL 片段
queryWrapper.last("limit 10");
```
4. 执行查询:
```java
List<User> userList = userMapper.selectList(queryWrapper);
```
以上就是 MyBatis-Plus 条件构造器的使用方法,更多的查询条件可以参考官方文档。
mybatisplus怎么用条件构造器删除
### MyBatisPlus 使用条件构造器进行删除操作
MyBatis-Plus 提供了强大的条件构造器,能够帮助开发者快速构建灵活、高效的查询条件[^3]。对于执行删除操作而言,同样可以利用这些特性来简化代码逻辑。
#### 删除单条记录实例
当需要根据主键ID移除一条数据时:
```java
// 假设有一个名为UserMapper的接口用于映射用户表的操作
int result = userMapper.deleteById(id);
if (result > 0) {
System.out.println("删除成功");
} else {
System.out.println("未找到对应的记录");
}
```
此段代码展示了基于给定`id`参数从数据库中删除特定用户的简单例子[^4]。
#### 批量删除多条符合条件的数据
如果想要一次性清除满足某些条件的所有项,则可采用如下方式:
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 18).lt(User::getId, 10L);
int rowsAffected = userMapper.delete(wrapper);
System.out.printf("成功删除 %d 行%n", rowsAffected);
```
上述片段说明了怎样创建一个 `LambdaQueryWrapper` 对象并设置匹配规则(即年龄等于18岁且ID小于10),之后将其传递给 `delete()` 方法完成批量删除任务。
#### 动态拼接复杂条件表达式
为了适应更复杂的业务需求,还可以通过链式调用的方式组合多种过滤条件:
```java
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.likeRight("name", "张").or()
.apply("age >= {0}", 25)
.notIn("email", Arrays.asList("[email protected]"));
userMapper.delete(updateWrapper);
```
这段示例演示了如何使用 `likeRight`, `or`, 和自定义SQL片断(`apply`)以及集合排除(`notIn`)等功能来构成更为精细的选择标准。
阅读全文
相关推荐
















