Mybatis?plus邏輯刪除注解@TableLogic的使用
首先這個注解是苞米豆出品,也就是我們常說的mybatis升級版的東西。
簡單講一下這個注解的用法:我們在做數(shù)據(jù)庫設(shè)計的時候有時候哪怕是刪除也不會真的走物理刪除,畢竟這樣很多數(shù)據(jù)就不可恢復(fù)了,大多數(shù)時候很多刪除都是用邏輯刪除。
物理刪除和邏輯刪除
簡單來說物理刪除就是真的把這條數(shù)據(jù)從數(shù)據(jù)庫刪除了。
而邏輯刪除主要是把表中的某一個字段作為標(biāo)識符,一般我們常用的會默認(rèn)初始為0,當(dāng)我們想要刪除這條數(shù)據(jù)的時候會把這個標(biāo)識符改成1。這樣在我們的常識里這條記錄就被刪除了。并且任何的查詢都會添加這個條件,也就是要在代碼中保證查詢出來的數(shù)據(jù)是有效的。
@TableLogic注解
@TableLogic注解默認(rèn)值:
剛剛已經(jīng)說了這個注解是用于邏輯刪除的,代表一個標(biāo)識符,既然是標(biāo)識符肯定要有值了,比如我上面說的0表示存在,1表示刪除。但是不能排除有的設(shè)計就是不按照常理,比如1表示存在,2表示刪除。所以@TableLogic注解是可以設(shè)置默認(rèn)值的。用法如下:
@TableLogic(value=“存在標(biāo)識”,delval=“刪除標(biāo)識”) private Integer del_flag;
如果不寫value和delval會默認(rèn)存在標(biāo)識是0.刪除標(biāo)識是1.
@TableLogic注解用法
這個注解的用處就比較簡單了,當(dāng)我們在實體類中某一個字段添加了這個注解,就相當(dāng)于告訴mp這個字段是個標(biāo)識符。我們調(diào)用BaseMapper或者調(diào)用IService的所有增刪改查方法會受影響。
- 查詢的時候用條件構(gòu)造器,不用再對這個字段進(jìn)行判斷,會自動篩選出存在的值。這里需要注意拿我上面的demo舉例:哪怕我們傳條件del_flag = 1,也不會生效。簡單總結(jié)下:用mp條件構(gòu)造器查詢出來的結(jié)果一定是邏輯存在的
- 修改的時候差不多,如果我們把實體對象的del_flag 賦值為1然后保存,也是保存不成功的。
- 刪除的時候我們?nèi)绻挥眠@個注解,用mp的delete方法或者remove方法都是物理刪除。但是如果用了這個注解,那么所有的delete方法或者remove方法都是邏輯刪除,也就是將del_flag 改為1.
需要注意的是上面說的都只對mp的查詢有影響,我們用xml或者注釋的方式自己寫sql是不生效的!
本篇筆記就記到這里,如果稍微幫到你了記得點個喜歡點個關(guān)注,也祝大家工作順順利利!其實這個知識點是新公司學(xué)到的東西,以前不知道所有的邏輯刪除都要自己寫,雖然能實現(xiàn)但是也麻煩的很,有時候我會覺得所謂的技術(shù)不見得是寫出別人寫不出來的東西,而是知道,使用,制作更好的輪子。愿我們都在前進(jìn)的路上!
到此這篇關(guān)于Mybatis plus邏輯刪除注解@TableLogic的文章就介紹到這了,更多相關(guān)Mybatis plus @TableLogic內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot2中HikariCP連接池的相關(guān)配置問題
這篇文章主要介紹了springboot2中HikariCP連接池的相關(guān)配置問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12java:程序包org.apache.ibatis.annotations不存在報錯解決
這篇文章主要給大家介紹了關(guān)于java:程序包org.apache.ibatis.annotations不存在報錯的解決方法,這個錯誤是我在直接導(dǎo)入springboot項目的時候報錯的,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析
這篇文章主要介紹了SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03springboot?vue接口測試定義編輯功能的實現(xiàn)
這篇文章主要為大家介紹了springboot?vue接口測試定義編輯功能的實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05ArrayList?foreach循環(huán)增添刪除導(dǎo)致ConcurrentModificationException解決分
這篇文章主要為大家介紹了ArrayList?foreach循環(huán)增添刪除導(dǎo)致ConcurrentModificationException解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2023-12-12Java Web程序?qū)崿F(xiàn)返回JSON字符串的方法總結(jié)
Java Web服務(wù)器端只要把Java對象數(shù)據(jù)轉(zhuǎn)成JSON字符串,把JSON字符串以文本的形式通過response輸出即可,2016-05-05Spark學(xué)習(xí)筆記之Spark中的RDD的具體使用
這篇文章主要介紹了Spark學(xué)習(xí)筆記之Spark中的RDD的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06