MybatisPlus实现逻辑删除功能

 更新时间:2020年12月25日 14:39:53   作者:诗水人间  
这篇文章主要介绍了MybatisPlus实现逻辑删除功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

逻辑删除

你有没有见过某些网站进行一些删除操作之后,你看不到记录了但是管理员却能够查看到。这里就运用到了逻辑删除。

什么是逻辑删除?

逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(deleted)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在库中。
对应的SQL语句:

update user set deleted=1 where id =1 and deleted=0

update 表名 set deleted = 1 where id = 1;语句表示,在该表中将id为1的信息进行逻辑删除,那么客户端进行查询id为1的信息,服务器就不会提供信息。倘若想继续为客户端提供该信息,可将 deleted 更改为 0 。
查找的话呢是通过加上条件deleted=0

select * from user where deleted=0

来自官网的配置,这里直接复制

第一步 添加全局配置

mybatis-plus:
 global-config:
  db-config:
   logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
   logic-delete-value: 1 # 逻辑已删除值(默认为 1)
   logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

第二步、在实体类上添加@TableLogic注解

@TableLogic
private Integer deleted;//对应的实体字段,实体字段需要根据数据库字段命名

这样就会在预编译sql中自动给这个字段设置的值就是全局配置设置的值

当然也可以设置局部生效 单个实体生效(不推荐)只需要在注解中添加

完整的实体示例

import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {

 private long id;
 private String name;
 private long age;
 private String email;
 private long managerId;
 private LocalDateTime createTime;
 private LocalDateTime updateTime;
 private long version;
 
 @TableLogic(value = "0",delval = "1") //value表示逻辑未删除值,delval表示逻辑删除设置的值
 private long deleted;
 
}

当然不建议这样操作,一般直接@TableLogic然后通过全局设置即可

测试代码,其中的传入的是主键 刘红雨的id

import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import top.huashengshu.demo.dao.UserMapper;

@SpringBootTest
@RunWith(SpringRunner.class)
class DemoApplicationTest {

  @Autowired
  UserMapper userMapper;

  @Test
  public void deleteTest(){
    int rows = userMapper.deleteById(1094592041087729666L);
    System.out.println("影响行数:"+rows);
  }

}

执行结果:

在这里插入图片描述

查看表中数据:

在这里插入图片描述

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

相关文章

  • Java日志框架打印应用程序日志代码的执行情况分析

    Java日志框架打印应用程序日志代码的执行情况分析

    在配置INFO日志级别时,日志器(logger)中debug级的日志代码仍会被执行,只是是否输出取决于配置的日志级别,本文基于Java 1.8、SLF4J 1.7.25和Log4j 2.20.0进行实验,详述了日志框架处理日志代码的机制,感兴趣的朋友一起看看吧
    2024-10-10
  • Java消息摘要算法MAC实现与应用完整示例

    Java消息摘要算法MAC实现与应用完整示例

    这篇文章主要介绍了Java消息摘要算法MAC实现与应用,结合完整实例形式分析了java消息摘要算法MAC的概念、原理、实现方法及相关操作注意事项,需要的朋友可以参考下
    2019-09-09
  • Java文件分级目录打包下载zip的实例代码

    Java文件分级目录打包下载zip的实例代码

    这篇文章主要介绍了Java文件分级目录打包下载zip的实例代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • HashMap链表与红黑树转换详解

    HashMap链表与红黑树转换详解

    这篇文章主要介绍了HashMap链表与红黑树转换详解,HashMap是Java中的一种数据结构,它实现了Map接口,提供了键值对的存储和检索功能,它基于哈希表的原理,通过将键映射到哈希表中的位置来存储和获取值,从而实现了快速的查找和插入操作,需要的朋友可以参考下
    2023-11-11
  • java检查数组是否有重复元素的方法

    java检查数组是否有重复元素的方法

    这篇文章主要介绍了java检查数组是否有重复元素的方法,涉及java针对数组元素的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • SpringBoot初始化加载配置的八种方式总结

    SpringBoot初始化加载配置的八种方式总结

    在日常开发时,我们常常需要 在SpringBoot应用启动时执行某一段逻辑,如获取一些当前环境的配置或变量、向数据库写入一些初始数据或者连接某些第三方系统,确认对方可以工作,那么在实现初始化逻辑代码时就需要小心了,所以本文介绍了SpringBoot初始化加载配置的方式
    2024-12-12
  • 浅谈java String.split丢失结尾空字符串的问题

    浅谈java String.split丢失结尾空字符串的问题

    下面小编就为大家带来一篇浅谈java String.split丢失结尾空字符串的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • MyBatis中${} 和 #{} 有什么区别小结

    MyBatis中${} 和 #{} 有什么区别小结

    ${} 和 #{} 都是 MyBatis 中用来替换参数的,它们都可以将用户传递过来的参数,替换到 MyBatis 最终生成的 SQL 中,但它们区别却是很大的,今天通过本文介绍下MyBatis中${} 和 #{} 有什么区别,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • Java Properties简介_动力节点Java学院整理

    Java Properties简介_动力节点Java学院整理

    Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置
    2017-05-05
  • Java中小球碰撞并使用按钮控制数量实例代码

    Java中小球碰撞并使用按钮控制数量实例代码

    这篇文章主要给大家介绍了关于Java中小球碰撞并使用按钮控制数量的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-12-12

最新评论