MyBatis-Plus之逻辑删除的实现

 更新时间:2020年11月15日 10:51:53   作者:youcongtech  
这篇文章主要介绍了MyBatis-Plus之逻辑删除的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

特别是互联网项目,对于数据一般是不能删除的(涉及到后面的数据分析),这就涉及到逻辑删除。所谓逻辑删除指的是数据并不是真正的删除,只是改数据表对应数据的状态(数据表中通常有一列叫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测试,如图:

控制台打印,如图:

刷新数据表,查看该用户数据是否变动,如图:

果然变动了,说明逻辑删除生效。

到此这篇关于MyBatis-Plus之逻辑删除的实现的文章就介绍到这了,更多相关MyBatis-Plus 逻辑删除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • eclipse中maven插件安装教程

    eclipse中maven插件安装教程

    这篇文章主要为大家详细介绍了eclipse中maven插件安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 解析Java的Jackson库中对象的序列化与数据泛型绑定

    解析Java的Jackson库中对象的序列化与数据泛型绑定

    这篇文章主要介绍了解析Java的Jackson库中对象的序列化与数据泛型绑定,Jackson通常被用来实现Java对象和JSON数据的相互转换功能,需要的朋友可以参考下
    2016-01-01
  • SVN报错:Error Updating changes:svn:E155037的解决方案

    SVN报错:Error Updating changes:svn:E155037的解决方案

    今天小编就为大家分享一篇关于SVN报错:Error Updating changes:svn:E155037的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Java实现五子棋游戏

    Java实现五子棋游戏

    这篇文章主要为大家详细介绍了Java实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • 你要知道IDEA的这些必备插件

    你要知道IDEA的这些必备插件

    这篇文章主要介绍了你要知道IDEA的这些必备插件,文中有非常详细的图文示例及代码,对正在使用IDEA的小伙伴们有很好的帮助哟,需要的朋友可以参考下
    2021-05-05
  • Java 数据结构与算法系列精讲之排序算法

    Java 数据结构与算法系列精讲之排序算法

    排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存
    2022-02-02
  • 关于消息队列如何保证消息的幂等性

    关于消息队列如何保证消息的幂等性

    这篇文章主要介绍了关于消息队列如何保证消息的幂等性,在分布式系统中,消息队列是一个常用的组件,用于解耦发送者和接收者之间的耦合,需要的朋友可以参考下
    2023-04-04
  • MyBatis拦截器分表实践分享

    MyBatis拦截器分表实践分享

    部门内有一些亿级别核心业务表增速非常快,增量日均100W,但线上业务只依赖近一周的数据,随着数据量的迅速增长,慢SQL频发,数据库性能下降,系统稳定性受到严重影响,本篇文章,将分享如何使用MyBatis拦截器低成本的提升数据库稳定性,需要的朋友可以参考下
    2024-01-01
  • SpringBoot+Redis实现消息的发布与订阅的示例代码

    SpringBoot+Redis实现消息的发布与订阅的示例代码

    本文主要介绍了SpringBoot+Redis实现消息的发布与订阅,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • java中gradle项目报错org.gradle .api.plugins.MavenPlugin解决办法

    java中gradle项目报错org.gradle .api.plugins.MavenPlugin解决办法

    在使用Gradle时开发者可能会遇到org.gradle .api.plugins.MavenPlugin报错提醒,这篇文章主要给大家介绍了关于java中gradle项目报错org.gradle .api.plugins.MavenPlugin的解决办法,需要的朋友可以参考下
    2023-12-12

最新评论