介绍逻辑删除
什么是逻辑删除?
这篇文章给大家介绍怎么在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中实现一个逻辑删除功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。