好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MyBatis-Plus的物理删除和逻辑删除(使用场景)

物理删除 :真实删除,将数据从数据库中删除,删除后查询不到被删除的数据

逻辑删除 :假删除,方便删除之后的数据恢复
在表中添加一个status字段,作为删除的标准,每次删除时,修改标志位,0代表没有删除,1代表删除
被删除记录的status字段被修改为[被删除状态](1),删除后还可以查询到数据

逻辑删除的使用场景
1.需要进行数据恢复
2.有关联数据,不便删除

?

1

2

3

# mysql

//测试逻辑删除

status int null default null

?

1

2

3

4

5

# 实体类

//实现逻辑删除

@TableLogic

@TableField (fill=FieldFill.INSERT)   //为了方便测试

private Integer status;

?

1

2

3

# MpConfig配置类

//status在添加时自动填充默认为0,未被删除状态(1是被删除状态)

this .setFieldValByName( "status" , 0 ,metaObject);

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

# Test测试类

 

//先添加测试数据

@Test

public void testAdd(){

     User user= new User();

     //没有设置id属性主键自增长,但mybatis-plus会使用主键策略自动生成id值

     user.setName( "wangwu" );

     user.setAge( 18 );

     user.setEmail( "licy@163测试数据" );

     int insert=userMapper.insert(user);

     System.out.println(insert);

}

 

//再测试逻辑删除

//在表中添加一个status字段,作为删除的标准,每次删除时,修改标志位,0代表没有删除,1代表删除

//UPDATE user SET status=1 WHERE id=? AND status=0 查询条件有一个status=0,即查询的都是没有被删除过的记录,被删除过的记录就不会被查询出来了

@Test

public void testDeleteByLogic(){

     int rows=userMapper.deleteById(1441596779656179713L);     //在做了逻辑删除的配置后,再使用id进行删除,执行的语句变成了修改id=?并且status为0的记录,如果status原来就是1(被删除过了),也不会再被删除,

     System.out.println(rows);

}

先添加测试数据

再测试逻辑删除

到此这篇关于MyBatis-Plus的物理删除和逻辑删除(使用场景)的文章就介绍到这了,更多相关MyBatis Plus物理删除和逻辑删除内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://blog.csdn.net/weixin_43908649/article/details/120468706

查看更多关于MyBatis-Plus的物理删除和逻辑删除(使用场景)的详细内容...

  阅读:63次