Mybatis-Plus逻辑删除

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

  给表增加deleted字段,用于表示数据是否被删除,可以定义:1代表删除,0代表未删除。

  同时,也修改实体,增加deleted属性并且添加@TableLogic注解:

    @TableLogic
    private int deleted;

  在application.properties中配置(基于springboot):

    # 逻辑已删除值(默认为 1)
    mybatis-plus.global-config.db-config.logic-delete-value=1
    # 逻辑未删除值(默认为 0)
    mybatis-plus.global-config.db-config.logic-not-delete-value=0

  测试删除:实际执行的是更新操作

    UPDATE
      tb_user SET deleted=1 WHERE id=? AND deleted=0

@Test
public void testDeleteById(){
    this.userMapper.deleteById(2L);
}

    测试查询:会自动添加上 deleted = ?这个条件

      SELECT
        id,user_name,password,name,age,email,version,deleted FROM tb_user WHERE id=? AND deleted=0

@Test
public void testSelectById(){
    User user = this.userMapper.selectById(2L);
    System.out.println(user);
}

 

posted @ 2020-03-03 18:19  糖不甜,盐不咸  阅读(7341)  评论(0编辑  收藏  举报