MybatisPlus中的删除和逻辑删除及区别介绍

MybatisPlus中的删除和逻辑删除及区别介绍

本文主要介绍MybatisPlus中删除和逻辑删除的相关知识。删除分为逻辑删除和物理删除,那么两者有什么区别呢?这篇文章会给你详细的介绍,感兴趣的朋友可以和边肖一起看看。

删除分为逻辑删除和物理删除,那么两者有什么区别呢?

物理删除:实删除,从数据库中删除相应的数据。之后,删除的数据就找不到了。

逻辑删除:假删除,将对应数据中字段的状态改为“已删除状态”,然后在数据库中仍然可以看到这条数据记录。

在我们的日常开发中,为了保留数据,经常会使用逻辑删除来删除数据。我们来看看物理删除和逻辑删除是怎么实现的。

首先,假设我有这样一张表。

类别:

包com . at guigu . my batis _ plus . entity;

导入Java . util . date;

导入com . baomi dou . mybatisplus . annotation . field fill;

导入com . baomi dou . mybatisplus . annotation . id type;

导入com . baomi dou . mybatisplus . annotation . table field;

导入com . baomi dou . mybatisplus . annotation . tableid;

导入com . baomi dou . mybatisplus . annotation . table logic;

进口龙目岛。数据;

@数据

公共类用户{

@TableId(type=IdType。自动)

私有长id;

私有字符串名称;

私有整数年龄;

私人字符串电子邮件;

@TableField(fill=FieldFill。插入)

私人日期创建时间;

//@TableField(fill=FieldFill。更新)

@TableField(fill=FieldFill。插入_更新)

私人日期更新时间;

}

用户映射程序接口:

包com . at guigu . mybatis _ plus . mapper;

导入com . at guigu . my batis _ plus . entity . user;

导入com . baomi dou . mybatisplus . core . mapper . base mapper;

//UserMapper继承BaseMapper后有CRUD函数。

公共接口用户映射程序扩展BaseMapperUser{

}

一.物理删除

1.根据id删除记录

@测试

public void testLogicDelete() {

int count=user mapper . delete byid(1L);//删除id为1的数据

System.out.println(受影响的行数 count);

}

2.批量删除

@测试

public void testDeleteBatchIds(){

int result=user mapper . deletebatchids(arrays . as list(2,3,4));//删除id为2,3,4的数据

System.out.println(结果);

}

结果:

物理删除比较简单。接下来,我们来看看如何实现逻辑删除!

二、逻辑删除

(1)数据库修改,添加删除的字段

(2)修改实体类,添加删除的字段,添加@TableLogic注释

/*

当添加@TableLogic时,delete语句将在程序内变为update语句。

其实我们写的代码不需要改。

*/

@TableLogic

私有整数已删除;

(3)测试

/**

*逻辑删除

*/

@测试

public void testLogicDelete() {

int count=user mapper . delete byid(5L);

System.out.println(受影响的行数 count);

}

结果:

测试后发现数据没有被删除,被删除字段的值从0变成了1。

测试分析后打印的sql语句是一个更新。

注意:在删除之前,数据的已删除字段的值必须为0,以便可以选择进行逻辑删除。

(5)逻辑删除后测试查询,MyBatis Plus中的查询操作会自动添加逻辑删除字段的判断。

@测试

public void testSelect() {

list user users=user mapper . select list(null);//查询所有记录

users . foreach(system . out:println);//遍历输出

}

结果:

总结

关于MybatisPlus中的删除和逻辑删除以及区别介绍这篇文章到此为止。更多关于MybatisPlus删除和逻辑删除的相关内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

MybatisPlus中的删除和逻辑删除及区别介绍