MybatisPlus實現(xiàn)邏輯刪除功能
邏輯刪除
你有沒有見過某些網(wǎng)站進(jìn)行一些刪除操作之后,你看不到記錄了但是管理員卻能夠查看到。這里就運(yùn)用到了邏輯刪除。
什么是邏輯刪除?
邏輯刪除的本質(zhì)是修改操作,所謂的邏輯刪除其實并不是真正的刪除,而是在表中將對應(yīng)的是否刪除標(biāo)識(deleted)或者說是狀態(tài)字段(status)做修改操作。比如0是未刪除,1是刪除。在邏輯上數(shù)據(jù)是被刪除的,但數(shù)據(jù)本身依然存在庫中。
對應(yīng)的SQL語句:
update user set deleted=1 where id =1 and deleted=0
update 表名 set deleted = 1 where id = 1;語句表示,在該表中將id為1的信息進(jìn)行邏輯刪除,那么客戶端進(jìn)行查詢id為1的信息,服務(wù)器就不會提供信息。倘若想繼續(xù)為客戶端提供該信息,可將 deleted 更改為 0 。
查找的話呢是通過加上條件deleted=0
select * from user where deleted=0
來自官網(wǎng)的配置,這里直接復(fù)制
第一步 添加全局配置
mybatis-plus: global-config: db-config: logic-delete-field: flag # 全局邏輯刪除的實體字段名(since 3.3.0,配置后可以忽略不配置步驟2) logic-delete-value: 1 # 邏輯已刪除值(默認(rèn)為 1) logic-not-delete-value: 0 # 邏輯未刪除值(默認(rèn)為 0)
第二步、在實體類上添加@TableLogic注解
@TableLogic private Integer deleted;//對應(yīng)的實體字段,實體字段需要根據(jù)數(shù)據(jù)庫字段命名
這樣就會在預(yù)編譯sql中自動給這個字段設(shè)置的值就是全局配置設(shè)置的值
當(dāng)然也可以設(shè)置局部生效 單個實體生效(不推薦
)只需要在注解中添加
完整的實體示例
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表示邏輯刪除設(shè)置的值 private long deleted; }
當(dāng)然不建議這樣操作,一般直接@TableLogic
然后通過全局設(shè)置即可
測試代碼,其中的傳入的是主鍵 劉紅雨的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("影響行數(shù):"+rows); } }
執(zhí)行結(jié)果:
查看表中數(shù)據(jù):
到此這篇關(guān)于MybatisPlus實現(xiàn)邏輯刪除功能的文章就介紹到這了,更多相關(guān)MybatisPlus 邏輯刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決org.apache.ibatis.binding.BindingException:?Invalid?boun
這篇文章主要介紹了解決org.apache.ibatis.binding.BindingException:?Invalid?bound?statement?(not?found)問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05Spring中利用SchedulingConfigurer實現(xiàn)動態(tài)定時任務(wù)配置的示例
定時任務(wù)是一項至關(guān)重要的功能,它們使得我們能夠按照預(yù)定的時間執(zhí)行特定的任務(wù),本文主要介紹了Spring中利用SchedulingConfigurer實現(xiàn)動態(tài)定時任務(wù)配置的示例,感興趣的可以了解一下2024-05-05劍指Offer之Java算法習(xí)題精講數(shù)組與字符和等差數(shù)列
跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化2022-03-03RandomAccessFile簡介_動力節(jié)點Java學(xué)院整理
RandomAccessFile 是隨機(jī)訪問文件(包括讀/寫)的類。它支持對文件隨機(jī)訪問的讀取和寫入,即我們可以從指定的位置讀取/寫入文件數(shù)據(jù)。這篇文章主要介紹了RandomAccessFile簡介,需要的朋友可以參考下2017-05-05Java求一個分?jǐn)?shù)數(shù)列的前20項之和的實現(xiàn)代碼
這篇文章主要介紹了Java求一個分?jǐn)?shù)數(shù)列的前20項之和的實現(xiàn)代碼,需要的朋友可以參考下2017-02-02