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