Mybatis-Plus逻辑删除
开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除,所谓逻辑删除就是将数据标记为删除,而并非真正的物理删除(非DELETE操作),
查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免数据被真正的删除。
给表增加deleted字段,用于表示数据是否被删除,可以定义:1代表删除,0代表未删除。
同时,也修改实体,增加deleted属性并且添加@TableLogic注解:
@TableLogic
private int deleted;
在application.properties中配置(基于springboot):
# 逻辑已删除值(默认为 1)
mybatis-plus.global-config.db-config.logic-delete-value=1
# 逻辑未删除值(默认为 0)
mybatis-plus.global-config.db-config.logic-not-delete-value=0
测试删除:实际执行的是更新操作
UPDATE
tb_user SET deleted=1 WHERE id=? AND deleted=0
@Test public void testDeleteById(){ this.userMapper.deleteById(2L); }
测试查询:会自动添加上 deleted = ?这个条件
SELECT
id,user_name,password,name,age,email,version,deleted FROM tb_user WHERE id=? AND deleted=0
@Test public void testSelectById(){ User user = this.userMapper.selectById(2L); System.out.println(user); }