MyBatis Plus的逻辑删除是如何实现的?

Mybatis Plus通过@TableLogic注解和逻辑删除插件实现逻辑删除的功能。

1. @TableLogic注解

在要实现逻辑删除的字段上,添加@TableLogic注解:

@TableLogic  
private Integer deleted;

Mybatis Plus会自动识别该字段。

2. 配置逻辑删除插件

在mybatis-plus.yaml配置文件中:

mybatis-plus:
  # 启用逻辑删除插件  
  plugins:
    - logicDelete

3. 设置逻辑删除值

配置逻辑删除和未删除的值:

logic-delete:
  deleted-value: 1   
  un_deleted-value: 0

4. 实现删除

// 实际实现逻辑删除
userMapper.deleteById(1);
deleteById方法,只是将deleted字段修改为deleted-value。

5. 查询数据

// 自动排除逻辑删除的记录
userMapper.selectList(null);  

查询时,会自动排除对应deleted字段的值。

6. 还原数据

user.setDeleted(0);
userMapper.updateById(user);

修改deleted字段为un_deleted-value,实现逻辑还原。

总的来说,Mybatis Plus通过:

  • @TableLogic注解指定逻辑删除字段
  • 逻辑删除插件实现解析处理逻辑
  • 在删除时,修改对应字段值
  • 在查询时,自动排除逻辑删除数据

从而实现了逻辑删除的功能。