MyBatis-Plus中的邏輯刪除使用詳解
前言
開發(fā)系統(tǒng)時,有時候在實現(xiàn)功能時,刪除操作需要實現(xiàn)邏輯刪除就是將數(shù)據(jù)標記為刪除,而并非真的物理刪除(非DELETE操作),查詢時需要攜帶狀態(tài)條件,確保被標記的數(shù)據(jù)不被查詢到。這樣做的目的就是避免數(shù)據(jù)被真正的刪除。
MP就提供了這樣的功能,方便我們使用,接下來我們一起學習下~
一、修改表結(jié)構(gòu)
為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的結(jié)果。
/**
* 刪除操作
* */
//根據(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的條件下設(shè)置了deleted字段標記為1。
2. 查看日志,第二個查詢的結(jié)果自動生成的sql代碼中也自動添加了條件為deleted字段等于0。如下如圖所示。

3. 通過查詢輸出的結(jié)果可發(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ù)庫中)。

總結(jié)
在實際的開發(fā)中也是這樣的,當用戶點完刪除數(shù)據(jù)信息后以為刪除掉了,但實際上沒你們想的那么簡單。你的數(shù)據(jù)在數(shù)據(jù)庫中不會輕易的刪除掉的。只是不會顯示在用戶頁面而已。大多數(shù)的開發(fā)其實都是這樣,所以說該知識點也是很重要的。MP簡化了我們的開發(fā),的確可以體會到~
這就是邏輯刪除的用法。做一個項目練練手就會了,相對而言比較好掌握。大家加油學起來~
到此這篇關(guān)于MyBatis-Plus中的邏輯刪除使用的文章就介紹到這了,更多相關(guān)MyBatis-Plus邏輯刪除使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot 整合RabbitMq(用心看完這一篇就夠了)
這篇文章主要介紹了Springboot 整合RabbitMq(用心看完這一篇就夠了),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
java實現(xiàn)html轉(zhuǎn)pdf方法步驟
這篇文章主要給大家介紹了關(guān)于java實現(xiàn)html轉(zhuǎn)pdf方法的相關(guān)資料,要將HTML轉(zhuǎn)換成PDF,我們需要借助Java中的第三方庫,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2023-08-08
java long轉(zhuǎn)String +Codeforces110A案例
這篇文章主要介紹了java long轉(zhuǎn)String +Codeforces110A案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
SpringBoot中的RestTemplate使用方法詳解
這篇文章主要介紹了SpringBoot中的RestTemplate使用方法詳解,為了方便使用,這里我封裝成一個工具類來靜態(tài)調(diào)用RestTemplate,基于SpringBoot2.4.2版本,需要的朋友可以參考下2024-01-01
使用Log4j2代碼方式配置實現(xiàn)線程級動態(tài)控制
這篇文章主要介紹了使用Log4j2代碼方式配置實現(xiàn)線程級動態(tài)控制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Java 語言守護線程 Daemon Thread使用示例詳解
這篇文章主要為大家介紹了Java 語言守護線程 Daemon Thread使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10

