mybatisplus如何进行逻辑删除查询
时间: 2023-10-05 11:14:58 浏览: 326
MyBatis-Plus 提供了逻辑删除的功能,需要在实体类中添加一个字段用于标识是否删除。假设该字段为 `deleted`,则可以通过以下方式进行逻辑删除查询:
1. 在实体类中添加 `@TableLogic` 注解,标识该字段为逻辑删除字段,如下所示:
```java
@TableName("user")
public class User {
@TableLogic
private Integer deleted;
// 其他属性和方法
}
```
2. 在 Mapper 接口中使用 `@LogicDelete` 注解标识逻辑删除的值,如下所示:
```java
public interface UserMapper extends BaseMapper<User> {
@LogicDelete(delval = "1", unDelval = "0")
int deleteById(Long id);
}
```
其中,`delval` 表示删除时的值,`unDelval` 表示还原时的值。
3. 在查询时,使用 `QueryWrapper` 对象进行条件拼接,同时需要调用 `QueryWrapper` 的 `eq` 方法,并传入逻辑删除字段和还原值,如下所示:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("deleted", 0); // 查询未删除的记录
List<User> userList = userMapper.selectList(wrapper);
```
在查询时,可以根据需要设置查询条件,如 `eq`、`like`、`between` 等。
在使用逻辑删除查询时,需要注意该字段的默认值和数据库的约束。如果该字段默认值为 null,需要在数据库中将该字段设置为可空;如果该字段默认值为 0 或 1,需要在数据库中将该字段设置为默认值,并添加约束,如 not null 约束。