開發系統時,有時候在實現功能時,刪除操作需要實現邏輯刪除,所謂邏輯刪除就是將數據標記為刪除,而並非真正的物理刪除(非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); }