MyBatis-Plus中的邏輯刪除使用詳解
前言
開發(fā)系統(tǒng)時(shí),有時(shí)候在實(shí)現(xiàn)功能時(shí),刪除操作需要實(shí)現(xiàn)邏輯刪除就是將數(shù)據(jù)標(biāo)記為刪除,而并非真的物理刪除(非DELETE操作),查詢時(shí)需要攜帶狀態(tài)條件,確保被標(biāo)記的數(shù)據(jù)不被查詢到。這樣做的目的就是避免數(shù)據(jù)被真正的刪除。
MP就提供了這樣的功能,方便我們使用,接下來我們一起學(xué)習(xí)下~
一、修改表結(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實(shí)體中添加屬性
增加deleted屬性并且添加@TableLogic注解
//標(biāo)記字段 @TableLogic private Integer deleted;
三、配置
在application.properties下配置刪除字段的標(biāo)記,默認(rèn)就是刪除為1,未刪除就為0。這個(gè)具體值大家可以修改,按開發(fā)要求即可。要是就是用默認(rèn)值的話其實(shí)不配置下面的代碼也可以執(zhí)行的。
#刪除標(biāo)記為1 mybatis-plus.global-config.db-config.logic-delete-value=1 #未刪除標(biāo)記為0 mybatis-plus.global-config.db-config.logic-not-delete-value=0
四、測(cè)試
編寫測(cè)試類,在測(cè)試類下編寫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. 查看日志會(huì)發(fā)現(xiàn),第一個(gè)刪除生成的sql代碼其實(shí)是修改,只是將deleted字段等于0的條件下設(shè)置了deleted字段標(biāo)記為1。
2. 查看日志,第二個(gè)查詢的結(jié)果自動(dòng)生成的sql代碼中也自動(dòng)添加了條件為deleted字段等于0。如下如圖所示。
3. 通過查詢輸出的結(jié)果可發(fā)現(xiàn)查不到id為12的數(shù)據(jù)。如下圖所示:
4. 我們從數(shù)據(jù)庫(kù)中查看數(shù)據(jù)表的信息,會(huì)發(fā)現(xiàn)id為12的數(shù)據(jù)deleted字段已經(jīng)被標(biāo)記為1。所以不會(huì)查詢到,但本身的數(shù)據(jù)沒有真正的被刪除(還存在數(shù)據(jù)庫(kù)中)。
總結(jié)
在實(shí)際的開發(fā)中也是這樣的,當(dāng)用戶點(diǎn)完刪除數(shù)據(jù)信息后以為刪除掉了,但實(shí)際上沒你們想的那么簡(jiǎn)單。你的數(shù)據(jù)在數(shù)據(jù)庫(kù)中不會(huì)輕易的刪除掉的。只是不會(huì)顯示在用戶頁面而已。大多數(shù)的開發(fā)其實(shí)都是這樣,所以說該知識(shí)點(diǎn)也是很重要的。MP簡(jiǎn)化了我們的開發(fā),的確可以體會(huì)到~
這就是邏輯刪除的用法。做一個(gè)項(xiàng)目練練手就會(huì)了,相對(duì)而言比較好掌握。大家加油學(xué)起來~
到此這篇關(guān)于MyBatis-Plus中的邏輯刪除使用的文章就介紹到這了,更多相關(guān)MyBatis-Plus邏輯刪除使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MyBatis-Plus解決邏輯刪除與唯一索引的問題
- MyBatis-Plus邏輯刪除和字段自動(dòng)填充的實(shí)現(xiàn)
- mybatis-plus 如何配置邏輯刪除
- 關(guān)于mybatis-plus邏輯刪除自動(dòng)填充更新時(shí)間的問題
- MyBatis-Plus實(shí)現(xiàn)邏輯刪除的示例代碼
- MyBatis-Plus的物理刪除和邏輯刪除(使用場(chǎng)景)
- 關(guān)于mybatis-plus邏輯刪除無效的問題
- MyBatis-Plus之邏輯刪除的實(shí)現(xiàn)
- mybatis-plus3.4.0邏輯刪除報(bào)錯(cuò)的解決
- mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼
相關(guān)文章
Springboot 整合RabbitMq(用心看完這一篇就夠了)
這篇文章主要介紹了Springboot 整合RabbitMq(用心看完這一篇就夠了),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12java實(shí)現(xiàn)html轉(zhuǎn)pdf方法步驟
這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)html轉(zhuǎn)pdf方法的相關(guān)資料,要將HTML轉(zhuǎn)換成PDF,我們需要借助Java中的第三方庫(kù),文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08java long轉(zhuǎn)String +Codeforces110A案例
這篇文章主要介紹了java long轉(zhuǎn)String +Codeforces110A案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09劍指Offer之Java算法習(xí)題精講二叉樹專項(xiàng)訓(xùn)練
跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化2022-03-03mybatis一級(jí)緩存和二級(jí)緩存的區(qū)別及說明
這篇文章主要介紹了mybatis一級(jí)緩存和二級(jí)緩存的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11SpringBoot中的RestTemplate使用方法詳解
這篇文章主要介紹了SpringBoot中的RestTemplate使用方法詳解,為了方便使用,這里我封裝成一個(gè)工具類來靜態(tài)調(diào)用RestTemplate,基于SpringBoot2.4.2版本,需要的朋友可以參考下2024-01-01使用Log4j2代碼方式配置實(shí)現(xiàn)線程級(jí)動(dòng)態(tài)控制
這篇文章主要介紹了使用Log4j2代碼方式配置實(shí)現(xiàn)線程級(jí)動(dòng)態(tài)控制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Java 語言守護(hù)線程 Daemon Thread使用示例詳解
這篇文章主要為大家介紹了Java 語言守護(hù)線程 Daemon Thread使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10