00:00
就是下面呢,咱要说删除,但删除两种方式,一种叫物理,一种叫逻辑。物理删除什么意思呢?大家看这个词,物理删除嘛,说的简单点,当我一删除,那表中数据就真的没有了,比如说现在我点这删除,这条记录你看是不是就没了,这就叫物理删除,表示数据我真正不存在了,那什么叫逻辑删除呢?给大家标注啊,它就是我这数据还存在,但是我再查询这数据是查不出来的,因为它已经被删掉了,但是数据在表中还有,那咱怎么这么做呢?在这里边就加个标志位,比如说我这里提前加过了,比如我叫比例的。假如咱们规定当我这值是零,就表示它没有删掉,当我值变成一,它就被删掉了。用户通过一个标志位来表示它是否被删掉,这叫逻辑删除数据还存在大单查的话,这数据是不会查出来,因为它已经标注没有零数据了,这叫物理和逻辑,而两种方式在实际中都会经常用到。
01:07
特别是逻辑善中会用的最多。那为什么用的很多呢?各各应该能想到啊。比如说啊,你做物理删除,当你数据真正删了数据数据就没了,比如说我们再想恢复,虽然能恢复,但是很不方便,假如你现在做逻辑删除,就算咱们删掉的话,数据还有我把标位一改,数据还可以马上恢复,就为了啊,比如说有一个功能,大家看这个。这是一个回收站功能,就类似于咱做这个逻辑删除,更方便把这数据做个恢复,做个回收啊,所以咱们逻辑删除用的稍微多一点,但是物理删除是一种有用的啊,这是两种不同的删除方式。那这个介绍之后啊,各位对它有个印象啊,然后下面再来演示,首先呢,我先演示就是一个最基本的删除操作,因为这个代码很简单,咱直接调个方法叫delete白地就可以做到一个删除啊,那我们来直接啊,来测试一个简单的删除操作。
02:08
小位置啊。就是一个删除操作,咱现在演示这个叫物理删除。这里边啊,写上这么一个方法,然后删除怎么做,咱直接调这个user map中的方法又叫做delete,白地里边传入你的ID值,比如现在啊,我随便传一个,咱就把这个ID是一的数据传进去,把它删掉啊,那我来一个一。然后咱一删返回的肯定是以那个就是。影响的行数,就是你成功删了几条记录,我把这值,比如这个result做个输出,这就是一个最简单的删除代码啊,直接调的方法做到,那这个咱来执行一下,看一下结果。我把它执行啊,咱看效果啊。
03:01
就是这个一执行,他就可以把我表中数据就给它真正删掉了啊,咱等他执行完成,然后执行之后咱看一下底层的SQ语句,大家来看。它这语句是不是就是delete from,删除语句根据ID是不是删掉,返回值是一,然后咱到表里边,刚才我删除这条记录,现在我做个刷新来看一的这条记录。是不是就没了这个过程就叫物理删除啊,咱直接写这个代码,这个可以把这数据删掉,这方法应该不复杂啊,就是一个。物理删除我写一下啊。第一个。物理删除,咱直接调这个方法就可以做到。然后这个说完之后啊,在咱的删除中呢,还有另外一个删除,它叫做批量删除。啊,那我们看一下啊,这里边有个叫批量删除,什么叫批量删除,这给大家解释一下啊,因为这种功能,大家后面的项目中咱也会要用到这种操作啊,批量删除给大家解释一下什么叫批量啊。
04:07
我觉得这种删除各位应该都见过,只是说你没注意过这个词而已。啊,举举个例子啊,比如说啊举个什么例子呢?这例子很明显就是这个例子。你看我这里边啊,比如你看我现在,比如说我想删这条记录,那我把它选中1.0按钮是不是就删掉了,比如我现在我选中了两个,一个是二,一个是三,我再点它,那这两条记录是不是都删掉了,比如现在我删一下,我1.2和三是不是都没了,这就叫批量删除,你可以同时删多条记录,而他删除都是根据ID行删除啊,这叫批量,然后后面在项目中会做到类似的功能。这都属于一些最基本功能,那这个批量删除在代码中怎么做,跟咱刚才写那个批量查询差不多,用个方法叫delete be ids里面传入你要删的那个ID的这个值就可以做到。
05:02
啊,这个我就快速演示一下啊,不再敲了,因为代码比较简单啊,咱直接测试一下效果啊。这个叫批量删除。然后批量删除中,比如说咱们找几个ID值啊,为了方便我就改两只,改个一和这个二啊,这两只然后到里边咱给它筛一下,就传个一,还有一个二。啊,这两个啊,一个一一个二,然后传完之后,现在把这个代码我们做个执行,就删这个。ID是一和二的两条记录啊,做这么一个批量删除啊,但是这删肯定也是物理删除啊,他就是把多个数据都给它删掉。那咱来执行,咱先看语句中,语句里边加的是不是一个音的,就是在这里边这个值,然后到表里边一和二,咱们刷新。是不是就没了啊,这个就做到了啊,是一个叫批量删除。
06:00
啊,这么一段基本代码。啊,这个大家啊,也是我给他复制过来啊。批量的这么一个操作,然后这个都演示之后呢,在我的文档中还有一个操作,但是这个操作也是啊,咱们后面用的不多,咱就看一下啊,我就不演示了,它就是做一个带条件的删除,因为咱条件一会儿都是用这种方式做的啊,这咱优句来说这个你给他了解一下,他跟咱刚才说那个。查询那个条件差不多,咱再看一下啊,也是用个map,然后调列方法,这些传列可以做删除啊,这各位了解一下啊,主要你把上面两个掌握一个就是。根据ID做删除,一个就是批量删除啊,这是两种最基本的删除做法。啊,这个咱就做到了啊,然后这个都做到之后,最后给大家来演示,就是咱们要说这个重点,它就叫做。逻辑删除。啊,这是我要说的重点啊,那逻辑删除刚才我也解释到了,它的删除特点就是表中数据还存在,但你这数据他要查询就查不出来了,它是通过一个标志位来判断你是删还是没有删啊,这个叫容易删除,就是数据还有,但是你查询查不出来,这叫容易删除。
07:18
那这个怎么做,咱先大概看一遍,然后我来重点来演示啊,咱看做法啊,首先第一步你在表中呢,加个字段,这字段作为逻辑删除标志啊,字段名字随便器,第二个在类中对应加个属性。在使用上边再加个注解,这个注解叫table logic,这是一个做逻辑删除一个注解,然后加完之后啊,咱们下面就是需要配置一个逻辑删除的插件,这些都做完之后,你再进行删除,他做的就是逻辑删除效果。啊,这个效果,而这效果中有一点啊,它在默认情况下,这个值是这么约定的,就是你不设置怎么约定的,当你值是零表示没有删除,当你是一表示删除,但你可以自己改,我这里写到啊,这个为默认值,你可以不写,比如我现在改十是没有删除,11是删除是可以啊,大家一般没必要改,这句话就不需要写默认就是零是不删除,一是已经删除。
08:21
就是这么一个特点啊,那咱下面按照过程,我把这效果给大家快速演示出来啊,关于这个逻辑删除。我写一下啊,首先第一步咱们就是表中添加一个逻辑删除的这么一个字段。啊,字段包括对应。你那个实体类里边添加一个这么一个属性,这是它的第一步,这个我在里边已经提前加过了啊,咱们看一下啊,就这里边我加一个叫这个deletet的啊,然后类型用的这个类型啊,或者你用别int也可以啊,我加上这么一个就是小的这个int类型,因为它传的就是零和一啊这一个值。
09:03
然后这个加完之后啊,咱这里边你注意啊。就是咱们在做这个,就是乐观锁版本号的时候,我是不是用自动填充加了默认值,但是默认值其实你不用自动填充也能加,咱可以这么来加。这个不知道各位是否能看懂啊。你看这叫什么,是不是叫default,就是说你现在往里面加值,如果你不设置它默认值就是零,咱可以加个defat这个值,这么加也可以啊,就是这里边两种方式,要么你用自动填充加,要么加个default,但是有一点各位注意啊,两者不能都用,就是你既用了default,用自动填充这是不可以的,只能加一个啊,我现在直接用一个default加就可以了,加问值。或者说你用我文档中这个自动填充方式啊,都一样的啊,这是第一步加上一个这个字段,还有它的属性。这给大家啊,接过来咱就加了一个默认值,用这个数据库来加。
10:01
就这些方式给大家多做演示啊,然后这个讲完之后,在咱们的类里边加上属性,这属性我来加一下啊,我来一个比如叫private这个in。然后他的名字应该叫那个啊,咱看那名字应该叫delete这个哈。把这加上。加上之后呢,在这上边咱需要加上一个注解,这注解就叫做table log,这是做那个逻辑删除的一个注解,Table log这个。啊,把这个给大家,咱给他加上啊这个位置。我写一下啊,添加属性,然后属性上添加注解,第一步我们就是这么来做。然后这一步做到之后,咱要做里边的第二步操作,那第二步干什么呢?需要配置一个就是逻辑删除的一个插件啊,这插件咱需要配置。然后这个插件我就把文档中这个直接给大家复制过来,这个插件把插件直接就复制到咱们刚才写那个配置那种里边加上一个逻辑删除的插件。
11:11
这个啊,再给它加上。就他啊。这各位这一步绝对不能少,如果你不加他的话,那你的逻辑删除应该是没有效果。啊,这个等于加上了,然后这个加上之后,咱这个过程应该就做到了,但是它里边还有一个特点,刚才提到你可以在你的配置文件中加上这句话。啊,再加一下啊。来到我们的配置文件中加这句话,而这句话什么意思呢?它就表示你设置一下,当你不删除是什么值,你删除会变成什么值,默认是不删除是零。删除是一。但是这个可以不写。你不写默认就是它,当然你可以改这个值,比如你改成十,改成11都可以啊,这个各位给他注意啊,改就这个就不需要加默认,就是零和一,零是不删除,一是删除,然后这么做之后,咱这个配置就完成了,最后咱们把效果我们来最终给他试一下,看一下最终的结果是什么样的。
12:11
啊,咱最好给他试一下啊。啊,比如说啊,这里边呢,为了明显我重新加条记录,咱重新做这个删除啊,咱重新加一条记录。找到咱们那个方法。呃,东方不败有值了,咱换一个啊。换一个,比如他这个。岳不群啊,叫他图方不败岳不群吧,啊,然后在里边把这个数据咱给他就重新加一条数据啊,咱重新做测试。这个咱们执行。等他添加成功。因为我刚才在数据库中加默认值是零啊,咱不需要加那个自动填充的,那咱们到里边刷新看一下,你看啊月部群是不是加进来了,包括你看它这个delete的默认值是不是就是零啊,这数据可以了,然后这个有之后,下面咱做个删除,删除代码就是咱们第一次写那个代码,这代码没有变化,还是这个代码,我把ID换成咱们的这个值。
13:16
那咱们来测试看结果啊,咱来试一下啊,咱要删这个就是岳不群的这条记录。但是他现在做的叫逻辑删除,刚才我提到了逻辑删除的特点就是数据还存在,只是说里边改了一个标志位啊,那我们来看一下这个数据啊,咱们现在刷新右群聊记录刷新。大家看它的变化,你注意数据是不是还有,但是它变了什么。看这里边deleted是变成了一,它就是把这标志位改成了一,或者说咱看他那个底层的circle狗语句是什么样的,大家看啊。我明明做的是删除,但是他执行了什么操作。
14:00
是不是update操作修改操作啊,他做是修改,就是把你这个值改成了这个一啊,让他就是做到一个逻辑删除啊,所以它里边就是这么一个效果,就是最终效果就是把这值变成了一。啊,小D位置啊。就是咱们执行删除的代码,它最终的效果就是把那个就是delete的。它的值变成了一啊,就这个结果,所以这个就关于逻辑删除这么一个效果啊,咱就最终演出来了。然后演示之后呢,里边有个特点啊,希望各位注意啊,比如说刚才我提到了。这条数据就是岳不群,这条数据咱是不是已经删掉了,如果说我现在比如说啊,我在做这个查询的时候,比如我们查询,那你说再查询的时候,这数据咱是不是应该不让它查出来啊,咱要查的是不是DT等于零的数据,所以咱再查的话,我们需要加个条件,就是为这个叫delete的值等于零的这个数据,咱需要把这个查出来,如果你等于一,那就表示已经删掉了,应该是不需要查出来的。
15:12
啊,所以咱们在写查询需要这么来做,但是这个过程不需要咱们关心的,因为在MP中这个已经帮咱们封装了,那咱来试一下啊,就找到我们上午写的第一个方法。这个方法咱上午写的查所有,那我来执行一下啊,咱看它是什么效果。我们知晓啊。一会儿咱就看它那个生成的最后语句和它最终的结果。啊,大家来看啊。你注意它的特点,咱们的表中有三条记录,但我现在一查,查出来是不是两条记录,他为什么查两条记录,咱看他的自语中。你注意啊。给咱们是不是多了一个条件,就是where delete是不是等于零,而这个条件我在里边应该没有做任何设置,它会自动帮咱们加上,因为咱们配置了逻辑删除的插件,包括加了注解,这条件会自动加上,你每次再查的话,它只会查这个比delete器等于零的这个数据啊,只会把这个查出来,因为等于一它就查不出来,因为那个是已经被删掉的数据。
16:17
这个啊,就是关于逻辑删除的这个部分。所以咱们把这个我们就最终演出来了啊,主要就是这些东西啊。然后这里边啊,就是我刚才这么说。不知道有同学啊,是否有一个疑问啊,因为之前呢,我讲课中,每次到这里边很多同学会问我一个问题啊,这里边我也说一下啊,咱不在课堂上吗?各位都是看着这个屏幕啊,我来强调一下,有问题什么问题呢?有同学他经常到这个地方会问这么一个问题啊,刚才我提到用MP呢,咱能查出的数据是不是就是没有被删掉数据啊?但有同学会想,比如我现在我想查这个已经删掉的数据,这个数据该怎么查出来呢?
17:02
这该怎么去做?你注意啊,我说一下这个问题该怎么解决,首先第一个如果说啊,咱们只用MP的这种方式,那他做不到,他默认只会查这个,没有删掉数据,一的数据查不出来,因为默认你怎么写这个条件都会带上,那咱需要怎么查到,那我们如果说你非要查这个已经删掉数据,咱只能用咱们最原始方式。什么叫最原始方式,就在这位置啊,以写上这么一个叉L文件,在叉文件中写上我们的S后语句,咱用最原始方式做到,用MP这个它做不到啊,你只能是自己写语句,把联能实现,所以这个各位注意,咱后面在项目中,因为有很多地方需要咱们自己写语句,因为有些表会比较复杂,咱需要自己写语义实现,而MP既然是一些最基本的专大投入。啊,所以这各位注意啊,也就是说呢。有一点希望各位,就是自己没事儿的时候多去练一练。就是我们之前在买所有阶段,各位讲那些so后语句,这些语句可以说都很重要啊,咱不管是在我们在线中,还是各位后面的电商中,这些语句咱都会写到,因为咱们不可能只做最基本的在卡操作,咱还有些比较复杂一些查询操作啊,所以这语句啊,各位就是没事的时候都得给他去练,练他去。
18:21
好好去熟悉熟悉啊,后面项目中咱都会用到。啊,所以这是关于逻辑删除部分啊,咱就演示完了啊。
我来说两句