共计 1558 个字符,预计需要花费 4 分钟才能阅读完成。
特地是互联网我的项目,对于数据个别是不能删除的 (波及到前面的数据分析),这就波及到逻辑删除。所谓逻辑删除指的是数据并不是真正的删除,只是改数据表对应数据的状态 (数据表中通常有一列叫 delFlag, 以此标识失常状态或删除状态)。逻辑删除个别都是更新操作, 但写大量更新办法无疑是减少代码量,MyBatis-Plus 又是如何实现逻辑删除的呢?其实很简略一共两步。
一、配置文件配置
mybatis-plus:
global-config:
db-config:
logic-delete-value: 1 # 逻辑已删除值 (默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值 (默认为 0)
二、数据模型实体增加注解
应用 @TableLogic 注解
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;
}
实现下面两步,在第三步咱们能够进行测试。
三、测试
删除用户表的这个用户,如图:
数据是否删除在于 user_status 是否扭转,如果变成 1,阐明逻辑删除失效。
如果 user_status 还是为 0 或者这条数据不在了 (物理删除了),阐明逻辑删除生效。
测试 Controller 代码:
@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 测试,如图:
控制台打印,如图:
刷新数据表,查看该用户数据是否变动,如图:
果然变动了,阐明逻辑删除失效。
正文完