逻辑删除操作
简介
删除数据,可以通过物理删除,也可以通过逻辑删除。
物理删除指的是直接将数据从数据库中删除,不保留。
逻辑删除指的是修改数据的某个字段,使其表示为已删除状态,而非删除数据,保留该数据在数据库中,但是查询时不显示该数据(查询时过滤掉该数据)。
首先在pom文件中导入MyBatisPlus依赖(3.4.0及其以上)
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
1.数据库中添加逻辑删除标记字段
2.在实体类中添加对应字段,并设定当前字段为逻辑删除标记字段
@Data
public class User {
private Long id;
//逻辑删除字段,标记当前记录是否被删除
@TableLogic
//@TableLogic(value = "0",delval = "1") 也可以在注解上设置删除字面值
private Integer deleted;
}
3.配置逻辑删除字面值
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
# 逻辑删除字段名
logic-delete-field: deleted
# 逻辑删除字面值:未删除为0
logic-not-delete-value: 0
# 逻辑删除字面值:删除为1
logic-delete-value: 1
逻辑删除本质:逻辑删除的本质其实是修改操作。如果加了逻辑删除字段,查询数据时也会自动带上逻辑删除字段。
4.执行测试代码
@Test
public void testDeleteById(){
userMapper.deleteById(1L);
}
结果如下:
总结
- 逻辑删除的字段,查询时显示为空,不存在!其实数据库中仍显示存在该数据。类似回收站
- 逻辑删除好处:管理员可以查看被删除的记录,防止数据的丢失。