您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么在MybatisPlus中實現一個邏輯刪除功能,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
你有沒有見過某些網站進行一些刪除操作之后,你看不到記錄了但是管理員卻能夠查看到。這里就運用到了邏輯刪除。
邏輯刪除的本質是修改操作,所謂的邏輯刪除其實并不是真正的刪除,而是在表中將對應的是否刪除標識(deleted)或者說是狀態字段(status)做修改操作。比如0是未刪除,1是刪除。在邏輯上數據是被刪除的,但數據本身依然存在庫中。
對應的SQL語句:
update user set deleted=1 where id =1 and deleted=0
update 表名 set deleted = 1 where id = 1;語句表示,在該表中將id為1的信息進行邏輯刪除,那么客戶端進行查詢id為1的信息,服務器就不會提供信息。倘若想繼續為客戶端提供該信息,可將 deleted 更改為 0 。
查找的話呢是通過加上條件deleted=0
select * from user where deleted=0
來自官網的配置,這里直接復制
mybatis-plus: global-config: db-config: logic-delete-field: flag # 全局邏輯刪除的實體字段名(since 3.3.0,配置后可以忽略不配置步驟2) logic-delete-value: 1 # 邏輯已刪除值(默認為 1) logic-not-delete-value: 0 # 邏輯未刪除值(默認為 0)
@TableLogic private Integer deleted;//對應的實體字段,實體字段需要根據數據庫字段命名
這樣就會在預編譯sql中自動給這個字段設置的值就是全局配置設置的值
當然也可以設置局部生效 單個實體生效(不推薦
)只需要在注解中添加
完整的實體示例
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表示邏輯刪除設置的值 private long deleted; }
當然不建議這樣操作,一般直接@TableLogic
然后通過全局設置即可
測試代碼,其中的傳入的是主鍵 劉紅雨的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("影響行數:"+rows); } }
執行結果:
查看表中數據:
關于怎么在MybatisPlus中實現一個邏輯刪除功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。