MyBatis-Plus中的邏輯刪除使用詳解
前言
開(kāi)發(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就提供了這樣的功能,方便我們使用,接下來(lái)我們一起學(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è)具體值大家可以修改,按開(kāi)發(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. 通過(guò)查詢輸出的結(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ù)沒(méi)有真正的被刪除(還存在數(shù)據(jù)庫(kù)中)。

總結(jié)
在實(shí)際的開(kāi)發(fā)中也是這樣的,當(dāng)用戶點(diǎn)完刪除數(shù)據(jù)信息后以為刪除掉了,但實(shí)際上沒(méi)你們想的那么簡(jiǎn)單。你的數(shù)據(jù)在數(shù)據(jù)庫(kù)中不會(huì)輕易的刪除掉的。只是不會(huì)顯示在用戶頁(yè)面而已。大多數(shù)的開(kāi)發(fā)其實(shí)都是這樣,所以說(shuō)該知識(shí)點(diǎn)也是很重要的。MP簡(jiǎn)化了我們的開(kāi)發(fā),的確可以體會(huì)到~
這就是邏輯刪除的用法。做一個(gè)項(xiàng)目練練手就會(huì)了,相對(duì)而言比較好掌握。大家加油學(xué)起來(lái)~
到此這篇關(guān)于MyBatis-Plus中的邏輯刪除使用的文章就介紹到這了,更多相關(guān)MyBatis-Plus邏輯刪除使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MyBatis-Plus邏輯刪除實(shí)現(xiàn)過(guò)程
- MyBatis-Plus中的邏輯刪除功能及實(shí)例分析
- mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼
- mybatis-plus邏輯刪除與唯一約束沖突問(wèn)題
- MyBatis-Plus實(shí)現(xiàn)邏輯刪除功能解析
- Mybatis-Plus邏輯刪除的用法詳解
- mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼
- MyBatis-Plus邏輯刪除和字段自動(dòng)填充的實(shí)現(xiàn)
- mybatis-plus 如何配置邏輯刪除
- MyBatis-Plus 邏輯刪除的實(shí)現(xiàn)示例
相關(guān)文章
SpringMVC生成的驗(yàn)證碼圖片不顯示問(wèn)題及解決方法
這篇文章主要介紹了SpringMVC生成的驗(yàn)證碼圖片不顯示問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Java適配器模式的實(shí)現(xiàn)及應(yīng)用場(chǎng)景
適配器模式是Java中一種常用的設(shè)計(jì)模式,它通過(guò)將一個(gè)類的接口轉(zhuǎn)換成客戶端所期望的另一種接口來(lái)實(shí)現(xiàn)不同接口之間的兼容性。適配器模式主要應(yīng)用于系統(tǒng)的接口不兼容、需要擴(kuò)展接口功能以及需要適應(yīng)不同環(huán)境的場(chǎng)景2023-04-04
MyBatis-Plus結(jié)合Layui實(shí)現(xiàn)分頁(yè)方法
MyBatis-Plus 使用簡(jiǎn)單,本文主要介紹使用 service 中的 page 方法結(jié)合 Layui 前端框架實(shí)現(xiàn)分頁(yè)效果,具有一定的參考價(jià)值,感興趣的可以了解一下2021-08-08
Spring?Security權(quán)限管理實(shí)現(xiàn)接口動(dòng)態(tài)權(quán)限控制
這篇文章主要為大家介紹了Spring?Security權(quán)限管理實(shí)現(xiàn)接口動(dòng)態(tài)權(quán)限控制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
使用Spring Cache時(shí)設(shè)置緩存鍵的注意事項(xiàng)詳解
在現(xiàn)代的Web應(yīng)用中,緩存是提高系統(tǒng)性能和響應(yīng)速度的重要手段之一,Spring框架提供了強(qiáng)大的緩存支持,通過(guò)??@Cacheable??、??@CachePut??、??@CacheEvict??等注解可以方便地實(shí)現(xiàn)緩存功能,本文給大家介紹了使用Spring Cache時(shí)設(shè)置緩存鍵的注意事項(xiàng)2025-01-01
超詳細(xì)解析Spring Bean的創(chuàng)建過(guò)程
這篇文章主要揭秘了Spring Bean的創(chuàng)建過(guò)程,文中通過(guò)代碼示例和圖文結(jié)合的方式解析的超級(jí)詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-05-05

