mybatis-plus实现逻辑删除

需求说明

常规的删除为物理删除,比较暴力。使用逻辑删除的好处是可能以后要用得到某些删除的数据。 比如说 某个需求是订单编号要自增, 即使这个订单被删除了,也要从被删除的订单编号开始递增,这个时候逻辑删除就派上用场了。
逻辑删除就是在数据库中,指定某个状态位字段,约定好删除和未删除的状态。例如1是未删除, 0 是删除 。
关于mybatis-plus逻辑删除的官网: mybatis-plus逻辑删除

代码实现

官方文档介绍的使用方法如下。
一共只有两步, 一个是在yml中配置, 一个是在实体类上指定某个字段用于逻辑删除
1、在项目yml中配置如下。

mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto  #自增主键
      logic-delete-field: flag  # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

server:
  port: 9898

logging:
  level:
    com.atguigu.gulimall: debug

2、在实体类中配置如下,比如指定showStatus 为逻辑删除字段。
在这里插入图片描述

@TableLogic注解的使用方法
在这里插入图片描述
写个接口测试一下
controller层

/**
 * 删除
 */
@PostMapping("/delete")
public R delete(@RequestBody Long[] catIds){
    categoryService.removeMenuByIds(Arrays.asList(catIds));
    return R.ok();
}

Service层

@Override
public void removeMenuByIds(List<Long> asList) {
    //TODO 1.检查当前删除的菜单,  是否被别的地方引用.
    //逻辑删除
    baseMapper.deleteBatchIds(asList);
}

使用postman进行测试
在这里插入图片描述
可以看到控制台打印的sql如下, 不是delete语句, 而是update语句
在这里插入图片描述
数据库中也把1,批量修改成了0 。说明逻辑删除成功了。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值