mybatisplus删除指定数据
时间: 2023-09-10 14:04:46 浏览: 107
MyBatis-Plus 提供了多种删除数据的方式,以下是其中两种常见的方式:
1. 根据实体对象删除数据
```java
User user = new User();
user.setId(1L);
int result = userMapper.delete(new QueryWrapper<>(user));
```
2. 根据条件删除数据
```java
int result = userMapper.delete(new QueryWrapper<User>()
.eq("age", 18)
.or()
.eq("name", "Tom"));
```
以上代码中,`userMapper` 是 MyBatis 的 Mapper 接口,`QueryWrapper` 是 MyBatis-Plus 提供的查询条件构造器,`delete` 方法用于执行删除操作。根据返回值 `result` 的值可以判断删除操作是否成功。
相关问题
mybatisplus删除数据
### 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 实现数据删除既简单又灵活,既可以满足基本需求也能够应对复杂场景的要求。开发者只需依据具体业务特点选取合适的方案即可高效达成目标。
conroller里用mybatisplus 删除某数据后 更新另一表的某字段
在使用MyBatis Plus进行删除操作后,如果需要更新另一张表的某个字段,可以在控制器中进行如下操作:
1. 删除指定数据:使用MyBatis Plus提供的删除方法,例如:`mybatisPlusService.removeById(id)`,其中`id`是要删除数据的主键值。
2. 更新另一张表的某个字段:使用MyBatis Plus提供的更新方法,例如:`mybatisPlusService.update(updateWrapper)`,其中`updateWrapper`是一个更新条件对象,可以通过它指定要更新哪些字段以及更新条件。在更新条件中,可以使用`eq`方法指定更新哪些数据,例如:`eq("id", id)`,其中`id`是要更新数据的主键值。在更新字段中,可以使用`set`方法指定要更新哪个字段以及更新的值,例如:`set("field_name", field_value)`,其中`field_name`是要更新的字段名,`field_value`是更新的值。
需要注意的是,在进行更新操作之前,需要先判断删除操作是否成功,如果删除成功,则执行更新操作。如果删除操作失败,则不执行更新操作。
阅读全文
相关推荐














