当前位置: 首页 > 经典语录 >

mybatisplus删除语句,实现逻辑删除功能

100次浏览     发布时间:2024-09-09 17:45:56    

这篇文章主要介绍了MybatisPlus实现逻辑删除功能,文中通过示例代码介绍得非常详细,对大家的学习或者工作具有一定的参考学习价值,

逻辑删除
你有没有见过某些网站进行一些删除操作之后,你看不到记录了但是管理员却能够查看到。这里就运用到了逻辑删除
什么是逻辑删除?
逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(deleted)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在库中。
对应的SQL语句:

1update 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

1select * 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;
  
}

执行结果:


查看表中数据:

到此这篇关于MybatisPlus实现逻辑删除功能的文章就介绍到这了