mybatisPlus-逻辑删除

承接: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字段,所以我们查询的时候会过滤掉逻辑删除的数据,但是数据依旧存在数据库.

posted @ 2022-03-31 14:54  从0开始丿  阅读(550)  评论(0编辑  收藏  举报