特別是互聯網項目,對於數據通常是不能刪除的(涉及到後面的數據分析),這就涉及到邏輯刪除。所謂邏輯刪除指的是數據並非真正的刪除,只是改數據表對應數據的狀態(數據表中一般有一列叫delFlag,以此標識正常狀態或刪除狀態)。邏輯刪除通常都是更新操做,但寫大量更新方法無疑是增長代碼量,MyBatis-Plus又是如何實現邏輯刪除的呢?其實很簡單一共兩步。java
mybatis-plus: global-config: db-config: logic-delete-value: 1 # 邏輯已刪除值(默認爲 1) logic-not-delete-value: 0 # 邏輯未刪除值(默認爲 0)
使用 @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
刪除用戶表的這個用戶,如圖:
測試
數據是否刪除在於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測試,如圖:
3d
控制檯打印,如圖:
code
刷新數據表,查看該用戶數據是否變更,如圖:
果真變更了,說明邏輯刪除生效。blog