MyBatis-Plus(十四)逻辑删除

逻辑删除

​ 逻辑删除并不会真正的从数据库中将数据删除掉,而是将当前被删除的这条数据中的一个逻辑删除字段置为删除状态。比如该数据有一个字段 deleted_flag,当其值为 0 表示未删除,值为 1 表示删除。那么逻辑删除就是将 0 变成 1

1、实现步骤

  • 假设 UserInfo 表中有一个 deleted_flag 字段作为逻辑删除字段:

逻辑删除字段说明:

  • 字段支持所有数据类型(推荐使用 IntegerBooleanLocalDateTime
  • 如果使用 LocalDateTime,建议逻辑未删除值设置为字符串 null,逻辑删除值只支持数据库函数例如 now()

在这里插入图片描述

  • 然后给对应的实体类字段上加上 @TableLogic 注解:
@Data
public class UserInfo {
    private Integer id;
    private String userName;
    private String passWord;
    private Integer age;
    @TableLogic
    private Integer deletedFlag;
}

2、开始测试

  1. 我们使用 MyBatis-Plus 自带方法删除一条记录:
userInfoMapper.deleteById(2);
  1. 查看数据库可以发现这条数据仍然存在,只不过删除字段值被设置为 1

在这里插入图片描述

  1. 使用 MyBatis-Plus 自带方法查询时是不会查到被逻辑删除的记录(会自动添加过滤条件):
List<UserInfo> users = userInfoMapper.selectList(null);

在这里插入图片描述

3、全局配置参数

  1. 如果项目代码比较规范,所有表的逻辑删除字段使用相同的名称(比如:deleted_flag),我们可以在 application.properties 中添加如下统一的配置,这样对应的实体类字段上就不需要再添加 @TableLogic 注解了:

注意:如果设置了全局逻辑删除字段值,实体类上仍然有 @TableLogic 则以实体上的为准,忽略全局。

#全局逻辑删除字段值
mybatis-plus.global-config.db-config.logic-delete-field=deleted_flag
  1. 默认情况下,逻辑已删除值为 1,逻辑未删除值为 0。我们也可以在 application.properties 中进行修改:
#逻辑已删除值(默认为 1)
mybatis-plus.global-config.db-config.logic-delete-value=1
#逻辑未删除值(默认为 0)
mybatis-plus.global-config.db-config.logic-not-delete-value=0

点击跳转至原文地址

--------------最后感谢大家的阅读,愿大家技术越来越流弊!--------------

在这里插入图片描述

--------------也希望大家给我点支持,谢谢各位大佬了!!!--------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值