怎么在MybatisPlus中实现一个逻辑删除功能

  介绍

这篇文章给大家介绍怎么在MybatisPlus中实现一个逻辑删除功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

逻辑删除

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

什么是逻辑删除?

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

update  user  set 删除=1,where  id =1,以及删除=0

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

select  *,得到user  where 删除=0

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

第一步添加全局配置

mybatis-plus:   ,配置:   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 删除;//对应的实体字段,实体字段需要根据数据库字段命名

这样就会在预编译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 名称;   ,private  long 年龄;   ,private  String 电子邮件;   ,private  long  managerId;   ,private  LocalDateTime  createTime;   ,private  LocalDateTime  updateTime;   ,private  long 版本;   ,=,@TableLogic (value “0“, delval =,“1“),//值表示逻辑未删除值,delval表示逻辑删除设置的值   ,private  long 删除;   ,   }

当然不建议这样操作,一般直接<代码> @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 才能;usermap;      @Test才能   public 才能;void  deleteTest () {   ,,,int  rows =, userMapper.deleteById l (1094592041087729666);   ,,,System.out.println(“影响行数:“+行);   ,,}      }

执行结果:

怎么在MybatisPlus中实现一个逻辑删除功能

查看表中数据:

怎么在MybatisPlus中实现一个逻辑删除功能

关于怎么在MybatisPlus中实现一个逻辑删除功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

怎么在MybatisPlus中实现一个逻辑删除功能