MyBatisPlus逻辑删除组件

好久没有写博客了,今天我们来学习了一下MyBatisPlus的逻辑删除组件。

什么是逻辑删除?

在开发中,对数据的删除操作是我们经常会执行的一种操作,用于删除存储在数据库中的一些错误数据或者不需要的数据,但是正常的删除操作是无法撤回的,也就是说,如果我们在系统中删除了一条数据之后,这条数据库就从系统的数据库中彻底删除了,通过普通手段是无法找回这条数据的。

于是这个时候,逻辑删除也就诞生了。

  • 什么是逻辑删除?

逻辑删除:就是不通过delete语句将数据从数据库删除, 而是通过一个字段的来标识数据是否被删除,这样被删除的数据并不是真的被删除了,而是通过字段的指进行了隐性删除,也被称作逻辑删除,或者软删除。

与逻辑删除对应的,也就是通过delete语句将数据彻底删除的操作,我们一般也将其称作物理删除

在MyBatisPlus的BaseMapper接口中,也为我们实现了一些通用的删除操作,可以更加方便我们的开发。但是在MyBatisPlus为我们自动生成的删除接口,都是数据物理删除,而不是逻辑删除。

当然,其实MyBatisPlus也为我们实现了逻辑删除的功能,只不过这个功能默认是不开启的,如果我们需要使用MyBatisPlus的逻辑删除功能,那么需要我们配置逻辑删除的组件。

逻辑删除的优点和缺点

  • 优点:数据操作更加安全,不会因为系统误删操作,而导致数据丢失,恢复数据更加容易。
  • 缺点:使用删除标识会改变查找和删除的逻辑,使查找和删除的逻辑要稍微复杂一些。

MyBatisPlus逻辑删除组件

MyBatisPlus的逻辑删除组件就是针对逻辑删除所带来的缺点而诞生的,使用MyBatisPlus的逻辑删除组件,能够无缝实现逻辑删除,而且对于简单的增删改查方法能够自动适应,而不需要我们另外编写SQL来实现逻辑删除。

MyBatisPlus实现逻辑删除

  • 在数据库表上添加一个标识逻辑删除的字段
`deleted` int(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除标识,0为正常,1为逻辑删除',

在这里插入图片描述

  • 在实体类上添加注解@TableLogic
/**
 * 数据库数据逻辑删除标识字段
 */
@TableLogic
private Integer deleted;
  • 配置MyBatisPlus逻辑删除组件
@Configuration
@MapperScan("com.zero.sys.mapper")
public class MyBatisPlusConfig {
    /**
     * 逻辑删除组件
     */
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }

}
  • application.yml配置文件
# MyBatisPlus的相关配置
mybatis-plus:
  # 配置逻辑删除字段
  global-config:
    db-config:
      # 删除状态为1
      logic-delete-value: 1
      # 没有删除状态为0
      logic-not-delete-value: 0

使用MyBatisPlus逻辑删除组件

进行了上述配置之后,在使用MyBatisPlus内置的查找和删除方法时,会自动适配逻辑删除的配置,即在查找时,只会查找标识没有删除的记录,而在删除时,只会修改标识删除字段的值,而不会真的从数据库中删除数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值