Mybatis-plus逻辑删除

  开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除,所谓逻辑删除就是将数据标记为删除,而并非真正的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免数据被真正的删除。

  mp为我们提供了这样的功能

1.为user表添加字段

#添加逻辑删除字段名
ALTER TABLE `tb_user`
ADD COLUMN `deleted` INT(1) NULL DEFAULT 0 COMMENT '1代表删除,0代表未删除' AFTER
`version`;

2.实体类的属性添加注解

    @TableLogic //逻辑删除的字段,1表示删除,0表示未删除
    private Integer deleted;

3.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

这样我们就配置好了,在使用的时候deleteById就会变成update语句

@Test
public void testDeleteById(){
  this.userMapper.deleteById(2L);
}
[main] [cn.itcast.mp.mapper.UserMapper.deleteById]-[DEBUG] ==> Preparing: UPDATE
tb_user SET deleted=1 WHERE id=? AND deleted=0
[main] [cn.itcast.mp.mapper.UserMapper.deleteById]-[DEBUG] ==> Parameters: 2(Long)
[main] [cn.itcast.mp.mapper.UserMapper.deleteById]-[DEBUG] <==  Updates: 1

 

posted @ 2022-01-24 14:08  程序员hg  阅读(236)  评论(0编辑  收藏  举报