MyBatis-Plus之邏輯刪除

特別是互聯網項目,對於數據通常是不能刪除的(涉及到後面的數據分析),這就涉及到邏輯刪除。所謂邏輯刪除指的是數據並非真正的刪除,只是改數據表對應數據的狀態(數據表中一般有一列叫delFlag,以此標識正常狀態或刪除狀態)。邏輯刪除通常都是更新操做,但寫大量更新方法無疑是增長代碼量,MyBatis-Plus又是如何實現邏輯刪除的呢?其實很簡單一共兩步。java

1、配置文件配置

mybatis-plus:
  global-config:
    db-config:
      logic-delete-value: 1 # 邏輯已刪除值(默認爲 1)
      logic-not-delete-value: 0 # 邏輯未刪除值(默認爲 0)

2、數據模型實體添加註解

使用 @TableLogic註解mybatis

package com.blog.tutorial.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * * </p>
 * * @author youcong
 * @since 2020-04-18
 */@Data
@TableName("wp_users")
public class Users extends Model<Users> {
    private static final long serialVersionUID = 1L;
    @TableId(value = "ID", type = IdType.AUTO)
    private Long id;
    @TableField("user_login")
    private String userLogin;
    @TableField("user_pass")
    private String userPass;
    @TableField("user_nicename")
    private String userNicename;
    @TableField("user_email")
    private String userEmail;
    @TableField("user_url")
    private String userUrl;
    @TableField("user_registered")
    private Date userRegistered;
    @TableField("user_activation_key")
    private String userActivationKey;
    @TableLogic
 @TableField("user_status")
    private Integer userStatus;
    @TableField("display_name")
    private String displayName;
}

完成上面兩步,在第三步咱們能夠進行測試。app

3、測試

刪除用戶表的這個用戶,如圖:
image.png測試

數據是否刪除在於user_status是否改變,若是變成1,說明邏輯刪除生效。
若是user_status仍是爲0或者這條數據不在了(物理刪除了),說明邏輯刪除失效。url

測試Controller代碼:spa

@PostMapping("/del")
public Map del(Integer id) {
    Map<String, Object> returnMap = new HashMap<>();
    returnMap.put("code", "200");
    returnMap.put("msg", "刪除成功");
    usersService.removeById(id);
    return returnMap;
}

使用PostMan測試,如圖:
image.png3d

控制檯打印,如圖:
image.pngcode

刷新數據表,查看該用戶數據是否變更,如圖:
image.png
果真變更了,說明邏輯刪除生效。blog

相關文章
相關標籤/搜索