MybatisPlus實現邏輯刪除功能

邏輯刪除

你有沒有見過某些網站進行一些刪除操作之後,你看不到記錄瞭但是管理員卻能夠查看到。這裡就運用到瞭邏輯刪除。

什麼是邏輯刪除?

邏輯刪除的本質是修改操作,所謂的邏輯刪除其實並不是真正的刪除,而是在表中將對應的是否刪除標識(deleted)或者說是狀態字段(status)做修改操作。比如0是未刪除,1是刪除。在邏輯上數據是被刪除的,但數據本身依然存在庫中。
對應的SQL語句:

update user set deleted=1 where id =1 and deleted=0

update 表名 set deleted = 1 where id = 1;語句表示,在該表中將id為1的信息進行邏輯刪除,那麼客戶端進行查詢id為1的信息,服務器就不會提供信息。倘若想繼續為客戶端提供該信息,可將 deleted 更改為 0 。
查找的話呢是通過加上條件deleted=0

select * from user where deleted=0

來自官網的配置,這裡直接復制

第一步 添加全局配置

mybatis-plus:
 global-config:
  db-config:
   logic-delete-field: flag # 全局邏輯刪除的實體字段名(since 3.3.0,配置後可以忽略不配置步驟2)
   logic-delete-value: 1 # 邏輯已刪除值(默認為 1)
   logic-not-delete-value: 0 # 邏輯未刪除值(默認為 0)

第二步、在實體類上添加@TableLogic註解

@TableLogic
private Integer deleted;//對應的實體字段,實體字段需要根據數據庫字段命名

這樣就會在預編譯sql中自動給這個字段設置的值就是全局配置設置的值

當然也可以設置局部生效 單個實體生效(不推薦)隻需要在註解中添加

完整的實體示例

import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {

 private long id;
 private String name;
 private long age;
 private String email;
 private long managerId;
 private LocalDateTime createTime;
 private LocalDateTime updateTime;
 private long version;
 
 @TableLogic(value = "0",delval = "1") //value表示邏輯未刪除值,delval表示邏輯刪除設置的值
 private long deleted;
 
}

當然不建議這樣操作,一般直接@TableLogic然後通過全局設置即可

測試代碼,其中的傳入的是主鍵 劉紅雨的id

import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import top.huashengshu.demo.dao.UserMapper;

@SpringBootTest
@RunWith(SpringRunner.class)
class DemoApplicationTest {

  @Autowired
  UserMapper userMapper;

  @Test
  public void deleteTest(){
    int rows = userMapper.deleteById(1094592041087729666L);
    System.out.println("影響行數:"+rows);
  }

}

執行結果:

在這裡插入圖片描述

查看表中數據:

在這裡插入圖片描述

到此這篇關於MybatisPlus實現邏輯刪除功能的文章就介紹到這瞭,更多相關MybatisPlus 邏輯刪除內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: