mybatisPlus-逻辑删除
物理删除:从数据库中直接移除.
逻辑删除:在数据库中没有移除,而是通过一个变量让它失效. deleted = 0 => deleted = 1 (管理员可以查看被删除的记录,防止数据的丢失,类似于回收站)
1 在数据库user表中添加逻辑删除字段
2 在User实体类中添加对应的属性
src/main/java/com/lv/mybatis_plus/pojo/User.java
@TableLogic //逻辑删除注解
private Integer deleted;
3 在配置类中注册逻辑删除组件
src/main/java/com/lv/mybatis_plus/pojo/User.java
//注册逻辑删除组件
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
4 在配置文件中编写逻辑删除的配置
src/main/resources/application.properties
#配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
5 在测试类中修改根据id删除的方法,运行
src/test/java/com/lv/mybatis_plus/MybatisPlusApplicationTests.java
//根据id删除
@Test
public void testDeleteById(){
userMapper.deleteById(1L);
}
6 查看数据库
7 查看控制台日志输出
通过查看sql语句,能够看出运行的是更新操作,并不是删除操作,记录依然在数据库中,但是deleted值已经变化了
8 再运行一下查询方法,查询id为1的用户
//测试查询
@Test
public void testSelectById(){
User user = userMapper.selectById(1L);
System.out.println(user);
}
9 查看控制台
观察查询结果和sql语句发现.在查询时会自动拼接deleted字段,所以我们查询的时候会过滤掉逻辑删除的数据,但是数据依旧存在数据库.