Spring Boot 和 Mybatis Plus 实现假删除
时间: 2024-05-15 09:14:22 浏览: 138
spring boot + mybatis
假删除是指将数据的状态标记为已删除,而不是真正地从数据库中删除。Spring Boot 和 Mybatis Plus 都提供了实现假删除的方式。
首先,在数据库表中添加一个表示删除状态的字段,比如 is_deleted。默认情况下,这个字段的值应该是 false。
然后,在 Mybatis Plus 中,可以使用注解 @TableLogic 和 @TableField 来标记这个字段。@TableLogic 表示逻辑删除,@TableField 表示数据表中的字段。
示例代码如下:
```java
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
@TableLogic
@TableField(value = "is_deleted", fill = FieldFill.INSERT)
private Boolean deleted;
}
```
在上面的代码中,@TableLogic 表示逻辑删除,@TableField(value = "is_deleted", fill = FieldFill.INSERT) 表示 is_deleted 字段在插入数据时自动填充为 false。
接下来,在进行查询时,需要将 is_deleted 字段的值设为 false,示例代码如下:
```java
public interface UserDao extends BaseMapper<User> {
@Override
@Select("select * from user where is_deleted = false")
List<User> selectList(Wrapper<User> queryWrapper);
}
```
在上面的代码中,使用了 Mybatis Plus 的 Wrapper 类来构建查询条件。is_deleted 字段的值被设为 false。
最后,在进行删除时,只需要将 is_deleted 字段的值设为 true 即可,示例代码如下:
```java
public void deleteUser(Long id) {
User user = new User();
user.setId(id);
user.setDeleted(true);
userDao.updateById(user);
}
```
在上面的代码中,将 id 对应的数据的 is_deleted 字段设为 true,达到假删除的目的。
阅读全文