本文爲Mybatis Plus系列文章的第8篇,前7篇訪問地址以下:html
二者的優劣:vue
因此一張表的數據是否採用邏輯刪除,還要根據數據的重要性、數據量、查詢性能以及業務需求等因素綜合判斷。java
CREATE TABLE `user` ( `id` BIGINT(20) NOT NULL COMMENT '主鍵ID', `name` VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', `age` INT(11) NULL DEFAULT NULL COMMENT '年齡', `email` VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱', `deleted` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '邏輯刪除標記', PRIMARY KEY (`id`) );
插入數據的時候,不須要爲deleted字段賦值spring
@Test public void testInsert() { User user = new User(); user.setName("字母哥"); user.setAge(18); int row = userMapper.insert(user); }
deleted採用默認值0(未刪除),新插入的數據都是未刪除的數據sql
執行以下Mybatis Plus API刪除操做數據庫
userMapper.deleteById(1286797255805796354L);
查看數據庫能夠發現這條數據仍然存在,只不過邏輯刪除字段值被設置爲1:後端
UPDATE user SET deleted=1 WHERE id=? AND deleted=0
userMapper.selectList(null);
會自動添加過濾條件WHERE deleted=0
springboot
SELECT id,name,age,email,deleted FROM user WHERE deleted=0
@TableLogic @TableField(select = false) private Integer deleted;
執行的SQL以下(注意查詢結果不包含deleted字段):mybatis
SELECT id,name,age,email FROM user WHERE deleted=0
一般在一個比較正規的管理項目中,邏輯刪除字段不容許隨意命名,全部表的邏輯刪除字段使用相同的名稱(好比:deleted)。咱們能夠在application.yml中添加全局配置,這樣就不須要在每個實體類上面都添加 @TableLogic註解了:app
注意:當全局配置和
@TableLogic
局部配置同時存在,則以實體上註解爲準,優先級更高。
#全局邏輯刪除字段值 mybatis-plus: global-config: db-config: logic-delete-field: deleted
默認狀況下,邏輯已刪除值爲1,邏輯未刪除值爲0。咱們也能夠在application.yml中進行修改:
#邏輯已刪除值(默認爲 1) #邏輯未刪除值(默認爲 0) mybatis-plus: global-config: db-config: logic-delete-value: 1 logic-not-delete-value: 0
以爲對您有幫助的話,幫我點贊、分享!您的支持是我不竭的創做動力! 。另外,筆者最近一段時間輸出了以下的精品內容,期待您的關注。