mybatisPlus配置逻辑删除和配置插入数据时自动保存逻辑删除字段

mybatisPlus配置逻辑删除和配置插入数据时自动保存逻辑删除字段

在实际开发中,删除数据一定要慎重,对于重要的数据,最好不要直接进行物理删除,物理删除是将数据在数据库中直接删除掉,如果后期有什么问题再想查看之前的数据,就很麻烦 ,这时对重要的表数据采用逻辑删除的办法就比较好,逻辑删除只是变更了数据库中逻辑删除的字段参数,并没有真的删除掉,方便后期查看。下面是我用mybatisPlus开发的时候使用逻辑删除的步骤:

springboot配置方式

  • 配置yml文件
mybatis-plus:
  global-config:
    db-config:
      logic-delete-value: 1   #状态 1 表示删除
      logic-not-delete-value: 0   #状态 0 表示未删除
  • 创建配置类
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Class MybatisPlusConfig
 * @Description: TODO
 * @Author Eric
 * @Version
 * @date 2020/4/21 下午12:27
 */
@Configuration
public class MybatisPlusConfig {
     /**
     * 若mp的版本是3.3.1以下的就需要在此处注入这个bean对象
     * 若mp的版本高于3.3.1的就无需在此处注入bean对象了
     */
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }

}
  • 在实体类上添加@TableLogic注解
@TableLogic 
private Integer isDelete;
  • 接下来就可以直接调用mp自带的delete方法了
    在这里插入图片描述
    这时候调用 mp的删除和查询方法都会自带逻辑删除功能(查询出的数据都是状态为0的数据)
调用MysqlPlus中的方法的sql
调用删除时 update 表名 set isDeleted=1 where id =1
调用查找时 select * from 表名 where isDeleted=0
  注:如果你想物理删除,直接在*Mapper.xml 文件中,自己单独写一个delete方法即可,命名最好不要与mp中的
  命名相同,否则命名相同时,你调用这个方法,系统此时实现的是你自己写的mapper方法

在有逻辑删除字段的表中,如果添加新的数据的时候想自动填充逻辑删除状态,mp也是可以实现的:

  • 重写insertFill方法
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @author Eric
 * @date 2020/4/26
 **/
@Component
public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
	    /**
		 * mybatisplus自定义填充公共字段 ,即没有传的字段自动填充
		 * 第一个参数是数据库逻辑删除字段名称,第二个参数是你默认添加的逻辑删除字段数据
		 */	
        setFieldValByName("isDelete", 0,metaObject);
    }
}
  • 在实体类上添加@TableField注解
    @TableLogic
    @TableField(fill = FieldFill.INSERT)
    private Integer isDelete;

操作很简单,配置完后,你再调用mp的insert方法,就算没有传逻辑删除字段参数,数据库也会自动填充的。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值