本文共 1080 字,大约阅读时间需要 3 分钟。
常规的删除为物理删除,比较暴力。使用逻辑删除的好处是可能以后要用得到某些删除的数据。 比如说 某个需求是订单编号要自增, 即使这个订单被删除了,也要从被删除的订单编号开始递增,这个时候逻辑删除就派上用场了。
逻辑删除就是在数据库中,指定某个状态位字段,约定好删除和未删除的状态。例如1是未删除, 0 是删除 。 关于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: 9898logging: 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层
@Overridepublic void removeMenuByIds(ListasList) { //TODO 1.检查当前删除的菜单, 是否被别的地方引用. //逻辑删除 baseMapper.deleteBatchIds(asList);}
使用postman进行测试
可以看到控制台打印的sql如下, 不是delete语句, 而是update语句 数据库中也把1,批量修改成了0 。说明逻辑删除成功了。转载地址:http://bonti.baihongyu.com/