00:00
各位同学大家好,下面呢,我们来看下一个操作逻辑删除,那什么叫逻辑删除,首先给大家先解释一下,说到逻辑删除呢,首先我们不得不说一个删除叫物理删除。两个咱们比较来看,物理删除还有逻辑删除。首先我们先说什么叫物理删除,其实这个呢最好理解,咱可以简单理解为物理删除,就是把表中的数据给它真正删除掉。大家注意啊,我刚才演示的ID删除也好,还有批量删除也罢,他们都是把表中数据是不是就删掉了,当一执行数据是不是就不存在了,这个叫物理删除,而什么叫逻辑删除?大家可以这么理解,我执行了删除操作。然后数据呢,它还在咱的表里边。
01:02
但是这个数据是查询不出来了,因为数据已经删掉了,这个叫逻辑筛,它的最大好处是什么呢?如果你删错了数据,可以快速恢复过来,而物理删数据在表中就真的不存在了,这是逻辑删除。那逻辑删除怎么做?下面给各位来说明一下它的实现过程。首先我们做个分析,然后用MP做个实现它的做法,怎么实现的,我写一下啊,首先第一个咱们在这个表里边添加一个字段,让字段呢,作为你这个逻辑删除的一个标志。然后这个标志,咱们可以约定一个规则。什么叫规则呢?这规则可以自己约定,比如现在我这么约定删除用零表示,没有删除用一表示,用这个来约定,那咱怎么做,就是咱们普通的数据,就是咱们一般的这个数据,它的这个标志都是零,都是一啊,就表示它没有删除,当你要做删除怎么做?
02:14
大家能想到,那我现在就把这个标志值改为什么,是不是改为零就可以了,零就代表它已经删掉啊,当然规则你可以约定,别人约定,一是删除,零是没有删,或者十是删,11是没有删,都可以,可以自己约定,总之一个特点,用一个逻辑删除标志做改变,通过它的改变判断你是删还是不删。所以总之一句话,各位记住啊。逻辑删除的本质是什么?它是一个修改操作。注意啊,逻辑删除本质是修改做的,并不删除,通过标志位来做这么一个判断,你是删还是没有删,这是咱们对它的一个分析,而咱们实际中做删除一般用的都是逻辑删除。
03:08
那怎么做,下面咱们通过MP做实现,给大家演示一下啊,按照这个流程。那我来写一下。我给各位写到右边啊,首先它的第一步操作,咱们在表里边添加一个字段。然后对应的实体类里边添加上一个属性,作为咱们说这个逻辑删除的这么一个标志。这是里边的第一步,那咱们来加一下啊,首先表里边的,比如说咱们加个字段,假如说我起名叫deletet的,这名字可以随便起,我的表里边已经提前加过了,各位通过工具或者通过语句,你看啊,我加这个叫deleteed,就是一个类型,这作为逻辑生除标志,然后标志中我约定零,你看啊,默认值就是零零就代表没有删,一代表删除,当然可以约定别的规则,这是第一个加上一个字段。
04:07
然后加上之后,咱在对应的实体类里边加上它的属性,那我来加下啊,我加这个位置。叫逻辑删除的标志,加上private inter,我们叫deleted,这是我们加的第一步,添加上。字段包括它的属性,这各位知道,然后加上之后,我们到第二步我写一下啊,就是MP中的做法,咱的第二步操作呢,在你实体类上边作为逻辑删除标志的属性上边添加上一个注解,这注解是由MP封装的,那我们来写一下啊,在delete上边加个注解,注解名字叫做table logic,这注解的作用就是让它作为逻辑删除的标志,这是咱的第二步操作。
05:03
我把这个给各位截到图里边,各位记住第二步应该怎么去做,添加上table log这个注解作为逻辑删除标志。然后这么做之后,下面还有第三步操作,给各位进步,写下第三步。第三步怎么做呢?咱们在项目的配置文件中呢。你来约定一下你那个规则。什么规则呢?比如你约定一是删除,零是没有删,或者十是删除,11是没有删,你可以在配置文件中做个约定,那咱们看一下啊,就是我们在配置文件中加上这么两行配置,一个代表你看啊,Not delete是没有删,一个代表底下就是你这里边,你看我约定啊,没有删是零,删除是一,你把这个加到你项目的配置文件中就可以了,也就是这段话。
06:01
然后这段话中特别说明啊,就是大家记住啊,MP中默认情况下零代表没有删除。一代表已经删除,比如说这两句话,你不写零就代表没有删,一代表删除可以不加,当然可以改成别的鬼子,比如说改成十是没有删,11是删除都是可以的,看你的约定,咱一般为了方便,这个就是零代表没有删,一代表删就可以了,也没必要改,因为这个改意义不大,用问值就足够了啊,当然可以实现就改。这是我们做的第三步,然后这个做完之后,咱们这个逻辑删除,这个过程就完成了,最终我们做测试就可以实现,这是它一个基本步骤,我再说一遍,然后咱们做个测试。在过程中,第一步表中加字段,类中加属性作为逻辑生成标志,我们加的这个叫做比deletet的,包括属性,包括字段int类型都加进去了。第二步在你这个使用上面加注解table logic,然后第三步配置规则,规则中呢,如果说你不配置有一个默认值,刚才我们提到了默认情况下。
07:19
零代表。没有删除。一代表已经删除,这是我们提到的,我们现在用的也是这个规则,然后规则中咱刚才看到了,我们在表里边这个逻辑,删除标准中默认值就是零零就代表没有删除。所以现在都完成了,完成之后呢,最后我们做个测试,那测试的话呢,因为刚才我把数据都删掉了,那我首先咱先加一条数据,然后咱们进行测试,我在里边我们来加一个啊。把这个上硅谷北京这条数据给他加进去。咱们执行一下,我给他多加入这几条数据啊,咱先加入一条。
08:05
执行啊,应该是加了啊,我们看一下啊,这里报了一个错啊,看他报什么错啊。啊,这个位置啊,应该是有些值很需要给他。改一下啊。稍等我给他快速改价啊。那大家来看啊,这里边说ID,你看这错误啊,说ID没有一个默认值,那我们找一下啊,咱们找到它的实体类中,大家看到啊,就这个错误,刚才这个我改成了自动增长,你默认用的是那个生成19位的数字值,如果改成自动增长不是不可以,需要把表改一下,改成自动增长,所以这个咱先注掉,要不然它会报错,因为咱没有改那个表啊,咱直接加几个测试书就可以了,这个注意啊,刚才报的是这么一个操作,给他快速改一下。然后现在我给他执行一下,咱把这条数据先给他加进去,为了咱们测试这个逻辑删除做准备。等他添加。咱们看啊,第一条可以了,比如说我再加一条上硅谷这个上海。
09:06
这个咱们也是快速加进去。等它听出来,所以现在呢,在我表里边应该是有两条数据,下面再来测试,测试的话呢,还是之前的方法,根据ID删或者批量删都可以,那咱就根据ID删下,我到表里边找到一个指上硅谷上海这个ID。大家来看啊,目前它的最后一个字段值是不是零啊d delete的是零表示没有删除,那咱现在把上A股上海给它删掉,我把ID复制过来。咱们把这个方法执行一下,各位来一起看一下最终的结果是怎么样的,咱们来试一下啊。等他进行出来。我们看啊,咱就直接看表里边啊,我一刷新大家看到啊,很明显。
10:01
我现在诶给它调到啊,那各位能看到稍微小点啊,你看到啊,我现在这位置值是不是一要代表它已经被删掉了,这是我们看到的这么一个效果。就这个地方啊,它的值已经变成了一。逻辑删除就这个特点,这个已经完成了,然后咱们看它底层的SQ语句什么。很明显看到是不是就修改,所以各位记住逻辑删除本质就是修改操作,这就完成了,完成之后呢,这里边还有一个特点,比如说咱们在查的话,那我们查是不是只查这个没有删的数据,就是查这个d deletet的等于零的是不是数据啊,而这个过程不需要咱们关心了,MP中已经帮咱们做到了,那咱们直接演一个效果,大家看一下啊,我们就演示咱们写的第一个方法,查询所有把这个执行,咱看他会查出什么数据。看它有什么特点,这个过程已经给我们封装好了。
11:03
那来看啊,最终我们看到查出几条数据。是不是一条,因为咱们另一条已经删掉了,他就把这个上河沟北京查出来了,咱们看他的S口语中,各位看这句话。写的很明显啊,Where delete的是不是等于零啊,比如说现在当你在11类里边,包括表里边把字段属性加上,另外加了这个注解之后,后面再做加操作,它都会再条件位置加一个T等于零,也是都会去操作,你没有删的数据,你已经删的数据他就不会操作啊,就是每次他都来操作这个值。我写一下啊,就是咱们按照逻辑删除之后,他操作的记录都是你没有删除的,这个记录如果你已经删掉了,那它就不会经行操作,因为每个里边它都加上这么一个条件,Where dt的等于零。所以咱们现在通过这个过程就把逻辑删除给各位演示完成了,各位把这个特点给它记住,就是你加上字段,加上属性,加上注解,设置规则,规则不设置有默认值,最终测试,测试之后才能看到我们再进行操作,它只操作delete等于零,就是你没有申请数据。
12:23
所以以上就是我们演示的MP实现删除的切换操作。
我来说两句