mybatis-plus 逻辑删除

本文介绍了MyBatis-Plus中的逻辑删除特性,相较于物理删除,逻辑删除提供了一种更安全的数据管理方式。通过@TableLogic和@TableField注解,可以设置删除标记并控制其行为。配置逻辑删除插件并在application.properties中设定相关参数,可以实现数据的隐藏而非实际删除,便于数据恢复。此外,还展示了如何在实体类和配置文件中设置乐观锁和性能分析插件。
摘要由CSDN通过智能技术生成

mybatis-plus逻辑删除

  1. 首先说一下什么是物理删除----物理删除就是指把数据彻底从数据库删除掉,是彻底的删除干净
    1. 物理删除有个不好的地方就是直接将数据删除干净无法找回
  2. 逻辑删除就很人性化了----逻辑删除是mybatis-plus特有的属性主要是通过插件和特定的一个字段将其隐藏起来,并不是真正意义上的删除,它是可以恢复的

怎么实现的展示一波:
第一步
在这里插入图片描述
在这里插入图片描述
实体类

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

import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User5 {
    @TableId(type = IdType.ID_WORKER)//数字类型的id使用,当类型为Long时默认使用,生成19位的Id值,
    private String id;
    private String name;
    private Integer age;
    private String email;
    @TableField(fill = FieldFill.INSERT) //进行添加操作时有值
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE) //进行添加和修改操作时有值
    private Date updateTime;
    //添加version属性,注意添加@Version注解
    //同时使用TableField设置初始值为1
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @Version
    private Integer version;

    //添加删除标记
    @TableLogic
    @TableField(fill = FieldFill.INSERT)//设置初始值
    private Integer deleted;

    public User5(String name, Integer age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }
}

在这里插入图片描述
配置工具类 (需要配置逻辑删除插件)

package cn.com.zzn.config;

import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@MapperScan("cn.com.zzn.mapper")//添加扫描注解,写入mapper的路径,否则会找不到接口并报错
@Configuration
public class MybatisPlusConfig {
    //乐观锁插件
    @Bean
    public OptimisticLockerInterceptor OptimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }

    /*
Sql性能分析插件
开发环境使用,上线项目不推荐使用
 */
    @Bean
    @Profile({"dev","test"})//设置使用环境
    public PerformanceInterceptor performanceInterceptor(){
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        performanceInterceptor.setMaxTime(1000);//ms值,超过此处的毫秒值则不执行
        performanceInterceptor.setFormat(true);
        return performanceInterceptor;
    }
//    逻辑删除插件
    @Bean
    public ISqlInjector sqlInjector(){
        return new LogicSqlInjector();
    }

}

还需配置application.properties

#com.mysql.cj.jdbc.Driver:springBoot2.1以上要加上cj
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#serverTimezone=GMT%2B8:添加时区
spring.datasource.url=jdbc:mysql://localhost:3306/db01?serverTimezone=GMT%2B8
spring.datasource.username=db01
spring.datasource.password=db01

#mybatis日志:添加后可以查看执行的sql语句
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#设置当前环境:dev;test;prod
spring.profiles.active=dev
#设置逻辑删除的值:1-已删除;0-没有删除
#可自行设置值,但是一般不设置,10为默认值
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值