mybatisplus删除数据
时间: 2025-05-02 11:43:30 浏览: 38
### MyBatis-Plus 数据删除功能详解
MyBatis-Plus 提供了多种方式来实现数据的删除操作,无论是物理删除还是逻辑删除,都可以通过其内置的功能轻松完成。
#### 物理删除
物理删除是指直接从数据库中移除指定的数据记录。以下是几种常见的物理删除方法:
1. **根据主键 ID 删除单条记录**
可以调用 `deleteById` 方法,传入对应的主键值即可完成删除操作。
```java
boolean result = userMapper.deleteById(1L);
```
上述代码表示根据主键 ID 为 `1` 的记录执行删除操作[^5]。
2. **根据主键 ID 批量删除多条记录**
如果需要一次性删除多条记录,则可以使用 `deleteBatchIds` 方法,传入一个包含多个主键 ID 的集合作为参数。
```java
List<Long> idList = Arrays.asList(1L, 2L, 3L);
int result = userMapper.deleteBatchIds(idList);
```
这里的 `result` 表示成功删除的记录数量。
3. **基于条件构造器删除**
当需要按照特定条件删除数据时,可以通过构建 `Wrapper` 对象并传递给 `delete` 方法实现。
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 18).likeRight("name", "张");
int deleteCount = userMapper.delete(queryWrapper);
```
此处的查询条件是年龄等于 `18` 并且名字以 `"张"` 开头的用户会被删除。
#### 逻辑删除
为了防止误删重要数据,通常会选择启用逻辑删除机制而非真正地从数据库中清除数据。MyBatis-Plus 支持开箱即用的逻辑删除特性。
要开启逻辑删除支持,在实体类中标记相应的字段为逻辑删除标志位,并配置全局策略或者局部覆盖默认行为。
1. **定义逻辑删除字段**
在实体类中声明用于标识状态变化的属性,并标注上 `@TableLogic` 注解。
```java
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
@TableLogic
private Integer deleted; // 默认未删除状态下该列值应设为0或其他约定好的初始数值
}
```
2. **自定义逻辑判断规则(可选)**
若需调整默认的行为模式(如更改代表已删除的状态码),可在 application.yml 或者 properties 文件里重新设定相关参数。
```yaml
mybatis-plus:
global-config:
db-config:
logic-delete-value: 1 # 已被标记为删除后的实际存储值,默认为1
logic-not-delete-value: 0 # 尚处于正常可用情况下的对应取值,默认为0
```
当上述设置完成后,任何针对此表的操作都会遵循所制定的逻辑删除原则而不是真实意义上的清空动作[^2]。
---
### 总结
综上所述,利用 MyBatis-Plus 实现数据删除既简单又灵活,既可以满足基本需求也能够应对复杂场景的要求。开发者只需依据具体业务特点选取合适的方案即可高效达成目标。
阅读全文
相关推荐


















