Mybatis?plus邏輯刪除注解@TableLogic的使用
首先這個(gè)注解是苞米豆出品,也就是我們常說的mybatis升級(jí)版的東西。
簡(jiǎn)單講一下這個(gè)注解的用法:我們?cè)谧鰯?shù)據(jù)庫設(shè)計(jì)的時(shí)候有時(shí)候哪怕是刪除也不會(huì)真的走物理刪除,畢竟這樣很多數(shù)據(jù)就不可恢復(fù)了,大多數(shù)時(shí)候很多刪除都是用邏輯刪除。
物理刪除和邏輯刪除
簡(jiǎn)單來說物理刪除就是真的把這條數(shù)據(jù)從數(shù)據(jù)庫刪除了。
而邏輯刪除主要是把表中的某一個(gè)字段作為標(biāo)識(shí)符,一般我們常用的會(huì)默認(rèn)初始為0,當(dāng)我們想要?jiǎng)h除這條數(shù)據(jù)的時(shí)候會(huì)把這個(gè)標(biāo)識(shí)符改成1。這樣在我們的常識(shí)里這條記錄就被刪除了。并且任何的查詢都會(huì)添加這個(gè)條件,也就是要在代碼中保證查詢出來的數(shù)據(jù)是有效的。
@TableLogic注解
@TableLogic注解默認(rèn)值:
剛剛已經(jīng)說了這個(gè)注解是用于邏輯刪除的,代表一個(gè)標(biāo)識(shí)符,既然是標(biāo)識(shí)符肯定要有值了,比如我上面說的0表示存在,1表示刪除。但是不能排除有的設(shè)計(jì)就是不按照常理,比如1表示存在,2表示刪除。所以@TableLogic注解是可以設(shè)置默認(rèn)值的。用法如下:
@TableLogic(value=“存在標(biāo)識(shí)”,delval=“刪除標(biāo)識(shí)”) private Integer del_flag;
如果不寫value和delval會(huì)默認(rèn)存在標(biāo)識(shí)是0.刪除標(biāo)識(shí)是1.
@TableLogic注解用法
這個(gè)注解的用處就比較簡(jiǎn)單了,當(dāng)我們?cè)趯?shí)體類中某一個(gè)字段添加了這個(gè)注解,就相當(dāng)于告訴mp這個(gè)字段是個(gè)標(biāo)識(shí)符。我們調(diào)用BaseMapper或者調(diào)用IService的所有增刪改查方法會(huì)受影響。
- 查詢的時(shí)候用條件構(gòu)造器,不用再對(duì)這個(gè)字段進(jìn)行判斷,會(huì)自動(dòng)篩選出存在的值。這里需要注意拿我上面的demo舉例:哪怕我們傳條件del_flag = 1,也不會(huì)生效。簡(jiǎn)單總結(jié)下:用mp條件構(gòu)造器查詢出來的結(jié)果一定是邏輯存在的
- 修改的時(shí)候差不多,如果我們把實(shí)體對(duì)象的del_flag 賦值為1然后保存,也是保存不成功的。
- 刪除的時(shí)候我們?nèi)绻挥眠@個(gè)注解,用mp的delete方法或者remove方法都是物理刪除。但是如果用了這個(gè)注解,那么所有的delete方法或者remove方法都是邏輯刪除,也就是將del_flag 改為1.
需要注意的是上面說的都只對(duì)mp的查詢有影響,我們用xml或者注釋的方式自己寫sql是不生效的!
本篇筆記就記到這里,如果稍微幫到你了記得點(diǎn)個(gè)喜歡點(diǎn)個(gè)關(guān)注,也祝大家工作順順利利!其實(shí)這個(gè)知識(shí)點(diǎn)是新公司學(xué)到的東西,以前不知道所有的邏輯刪除都要自己寫,雖然能實(shí)現(xiàn)但是也麻煩的很,有時(shí)候我會(huì)覺得所謂的技術(shù)不見得是寫出別人寫不出來的東西,而是知道,使用,制作更好的輪子。愿我們都在前進(jìn)的路上!
到此這篇關(guān)于Mybatis plus邏輯刪除注解@TableLogic的文章就介紹到這了,更多相關(guān)Mybatis plus @TableLogic內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
多線程計(jì)數(shù),怎么保持計(jì)數(shù)準(zhǔn)確的方法
這篇文章主要介紹了多線程計(jì)數(shù)的方法,有需要的朋友可以參考一下2014-01-01
Java如何向主函數(shù)main中傳入?yún)?shù)
這篇文章主要介紹了Java如何向主函數(shù)main中傳入?yún)?shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
序列化版本號(hào)serialVersionUID的作用_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Java序列化是將一個(gè)對(duì)象編碼成一個(gè)字節(jié)流,反序列化將字節(jié)流編碼轉(zhuǎn)換成一個(gè)對(duì)象,這篇文章主要介紹了序列化版本號(hào)serialVersionUID的作用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
SpringBoot用實(shí)體接收Get請(qǐng)求傳遞過來的多個(gè)參數(shù)的兩種方式
本文主要介紹SpringBoot用實(shí)體接收Get請(qǐng)求傳遞過來的多個(gè)參數(shù),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Java 動(dòng)態(tài)加載jar和class文件實(shí)例解析
這篇文章主要介紹了Java 動(dòng)態(tài)加載jar和class文件實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
java語言描述Redis分布式鎖的正確實(shí)現(xiàn)方式
這篇文章主要介紹了java語言描述Redis分布式鎖的正確實(shí)現(xiàn)方式,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
java 實(shí)現(xiàn)將一個(gè)string保存到txt文檔中
今天小編就為大家分享一篇java 實(shí)現(xiàn)將一個(gè)string保存到txt文檔中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07
java?Date和SimpleDateFormat時(shí)間類詳解
這篇文章主要介紹了java?Date和SimpleDateFormat時(shí)間類詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
spring中REST和RESTful的區(qū)別以及基本實(shí)現(xiàn)
本文主要介紹了spring中REST和RESTful的區(qū)別以及基本實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04

