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!
推薦閱讀:
- Springboot中使用lombok的@Data註解方式
- MyBatisPlus利用Service實現獲取數據列表
- 詳解MybatisPlus中@Version註解的使用
- mybaties plus selectMaps和selectList的區別說明
- MyBatis-Plus 之selectMaps、selectObjs、selectCount、selectOne的使用