MyBatis-Plus中的邏輯刪除使用詳解
前言
開發(fā)系統(tǒng)時,有時候在實現(xiàn)功能時,刪除操作需要實現(xiàn)邏輯刪除就是將數(shù)據(jù)標記為刪除,而并非真的物理刪除(非DELETE操作),查詢時需要攜帶狀態(tài)條件,確保被標記的數(shù)據(jù)不被查詢到。這樣做的目的就是避免數(shù)據(jù)被真正的刪除。
MP就提供了這樣的功能,方便我們使用,接下來我們一起學習下~
一、修改表結構
為user表增加deleted字段,用于表示數(shù)據(jù)是否被刪除,1代表刪除,0代表未刪除。sql代碼如下
USE study; ALTER TABLE user ADD COLUMN deleted int(1) NULL DEFAULT 0 COMMENT '1代表刪除,0代表未刪除' AFTER user_status;
添加后的效果圖展示:

二、User實體中添加屬性
增加deleted屬性并且添加@TableLogic注解
//標記字段
@TableLogic
private Integer deleted;
三、配置
在application.properties下配置刪除字段的標記,默認就是刪除為1,未刪除就為0。這個具體值大家可以修改,按開發(fā)要求即可。要是就是用默認值的話其實不配置下面的代碼也可以執(zhí)行的。
#刪除標記為1 mybatis-plus.global-config.db-config.logic-delete-value=1 #未刪除標記為0 mybatis-plus.global-config.db-config.logic-not-delete-value=0
四、測試
編寫測試類,在測試類下編寫testDeleteById方法,刪除id為12的用戶信息。刪除成功后查詢表中的數(shù)據(jù)查看是否能查詢到id為12的結果。
/**
* 刪除操作
* */
//根據(jù)id刪除
//int deleteById(Serializable id);
@Test
public void testDeleteById() {
int result = this.userMapper.deleteById(12);
if(result>0){
testSelectList();
System.out.println("刪除成功!");
}else {
System.out.println("刪除失?。?);
}
}
效果圖:
1. 查看日志會發(fā)現(xiàn),第一個刪除生成的sql代碼其實是修改,只是將deleted字段等于0的條件下設置了deleted字段標記為1。
2. 查看日志,第二個查詢的結果自動生成的sql代碼中也自動添加了條件為deleted字段等于0。如下如圖所示。

3. 通過查詢輸出的結果可發(fā)現(xiàn)查不到id為12的數(shù)據(jù)。如下圖所示:

4. 我們從數(shù)據(jù)庫中查看數(shù)據(jù)表的信息,會發(fā)現(xiàn)id為12的數(shù)據(jù)deleted字段已經(jīng)被標記為1。所以不會查詢到,但本身的數(shù)據(jù)沒有真正的被刪除(還存在數(shù)據(jù)庫中)。

總結
在實際的開發(fā)中也是這樣的,當用戶點完刪除數(shù)據(jù)信息后以為刪除掉了,但實際上沒你們想的那么簡單。你的數(shù)據(jù)在數(shù)據(jù)庫中不會輕易的刪除掉的。只是不會顯示在用戶頁面而已。大多數(shù)的開發(fā)其實都是這樣,所以說該知識點也是很重要的。MP簡化了我們的開發(fā),的確可以體會到~
這就是邏輯刪除的用法。做一個項目練練手就會了,相對而言比較好掌握。大家加油學起來~
到此這篇關于MyBatis-Plus中的邏輯刪除使用的文章就介紹到這了,更多相關MyBatis-Plus邏輯刪除使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MyBatis-Plus結合Layui實現(xiàn)分頁方法
MyBatis-Plus 使用簡單,本文主要介紹使用 service 中的 page 方法結合 Layui 前端框架實現(xiàn)分頁效果,具有一定的參考價值,感興趣的可以了解一下2021-08-08
Spring?Security權限管理實現(xiàn)接口動態(tài)權限控制
這篇文章主要為大家介紹了Spring?Security權限管理實現(xiàn)接口動態(tài)權限控制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06

