00:00
各位同学大家好,刚才呢,我们演示了在map层进行MP的修改操作,那下面呢,给大家演示一下删除操作,删除操作里边呢,咱们主要演示这么几个操作,咱们先看一遍啊,首先第一个操作我们先演示根据ID删除,然后第二个我们再演示就是批量删除,也就是说你能删除多条记录,那这个给大家解释一下啊,第一个ID删除其实就是删除某一条记录,就类似于这个效果,咱们把数据直接删掉,而什么叫批量删除?比如我现在选择多个点按钮,大家看目前是不是删了多条记录,这就是咱们要演示的两个操作,那这里边给各位来做一个详细的演示,在演示之前咱要特别说明一个问题,给大家特别说一下啊,删除里边有这么一种操作。一个叫做物理删除,还有一个叫做逻辑删除,这个给大家先解释一下,然后咱们做删除,首先咱先解释一下啊,什么叫物理删除,大家来看一下这个词,物理删除,各位想一下什么意思啊。
01:16
也就是说啊,我执行删除之后,那我表中的数据就真正给它删掉了。就是真正删除了,也就是咱们刚才看这效果,我点删除表数据是不是就没了,这个叫物理删除,而这里边还一个删除叫逻辑删除,那什么叫逻辑删除,给大家解释一下啊,当我执行之后,表里面的数据还存在,但是这个数据已经查询不出来了,因为他已经删掉了,这个叫逻辑筛,而物理删简单直接删掉,逻辑删该怎么实现,给大家说明一下啊,咱的做法就是添加一个叫逻辑删除这个角标志位,通过标志位我们进行判断,比如说我现在我可以约定。
02:10
这个零代表没有删除,然后一代表已经删除。用它做约定,那再要删怎么做呢?那就是修改这个标志位。通过它做到,比如咱们删除,那标志位就改成一,如果你没有删,那它值就是零,所以大家要知道啊,逻辑删除本质其实就是个什么操作,是不是就是一个修改操作,把标志位改成一的过程,就是逻辑删除,逻辑删除大家也看到啊,它的最大好处什么呢?咱们删完数据之后,比如你数据删错了,是不是能快速恢复,所以这是一个很大好处,在实际开发中,咱一般用的都是逻辑删除。那下面呢,给大家演示一下啊,首先我说明啊,My with plus里边,它里边内置的逻辑删除,然后怎么做,很简单,咱们看一下啊,第一个在表里边咱们加上一个标志位字段,比如这里边我已经加过了,叫is deleted,零表示可用一代表删除,然后加上之后咱们找到对应的实体类,咱找到这个叫被NT里边找到一个属性,这个属性大家看啊,在属性上那个注解叫table logic,当你加上注解之后,里边就能实现逻辑删除,就是这么来做,加个字段,加个属性,然后在数上边加上注解叫table logic,这注解就表示逻辑删除,这个标志逻辑删除中里边有一个默认的一个效果,给大家写一下啊,什么效果?默认情况下零代表没有删除一代。
03:59
表已经删除,这个值你可以改,当然一般咱也不需要改默认零就可以了,如果改的话怎么做?很简单啊,大家看这段代码,我们可以在配置文件中加上这段配置,你看我们约定啊,Not delete是没有删,是零删除的话加个一,比如你改成别的值也可以,如果你不加这个默认值,零代表没有删,一代表删除,各位如果加的话,那就来到项目的配置文件中,在这里边直接加就可以了,我这里就不加了,咱就用默认值零是没有删,一是删除,这就是逻辑删除,然后这里边给大家把效果演示一下啊,我们先写第一个就是ID删除。
04:45
加上里边这个方法,咱们加上一个test public with,我叫delete ID,然后在里边调方法,方法中这个咱看一下啊,叫delete,白地咱们传入一个ID值,比如说到里边我找一个,呃,我就把这个ID是这个。
05:09
二的数据删掉啊,咱这里边就传个二,然后最终呢,它返回一个结果是个int类型,跟之前添加一样,就是咱说那个影响行数,这个我我就不做输出了啊,咱直接测试一下,看一下效果。现在我把这个执行,咱们看一下删除之后的效果,把ID12的数据给它最终删掉,这里边做的注意是逻辑删除表中数据还存在,但是数据已经查不出来了,然后咱们看底层的语句,大家看啊语句是什么?是不是就是update修改的语句,然后在里边咱们找到表里边,大家看这个位置值是不是就是一了,表示数据已经删掉了,然后删掉之后,这里边咱们来再看下一个效果,什么效果呢?刚才我提到了逻辑删除之后这数据是不是就查不出来了,而这个过程MP里边也做了封装,咱为了效果明确,我这么来做啊,我手动把值改一下,为了咱能看到效果比,这个值我都改成一,大家看啊,我目前数据中是不是只有一条数据是零,就是咱目前只有一条数据没有删,那这个时候我现在执行咱们的第一个方法,查询表中所有记录,咱们看它会有什么效果啊,刚才我提到MP里边已经做了封装,咱看他是怎么封装的。
06:41
等他执行,咱们看一下这个效果是什么样的。大家看啊,最终得到几条记录,是不是只有一条,为什么?因为逻辑删除嘛,这个零才查一就不查了,包括咱们看它底层的circle语句,大家看这语句应该很明显看到这个条件意思deleteed是不是等于零,表示这数据就是没有删掉,所以以上是咱们演示的ID删除的方法,这个咱就完成了,完成之后呢,我们继续来演示下一个操作,叫批量删除,就是你可以同时删除多条记录,那我加上一个方法,Test的加上public with,我叫test词这个be。
07:31
Delete,然后在里边我们调方法,这方法咱们看一下啊,大家看这个方法,Delete bunchnch ids,然后方法中咱看源码里边,大家看传的是个什么,这个我应该都清楚啊,是不是一个集合呀,所以在里边我来传个集合,那我直接啊,用这个工具类,直接咱给它往里边放了is list的里边我传入多个值,比如传个一,传个二,或者你传更多的值做删除,我就传这么几个了,最终返回就是咱说那个影响行数啊,我就不做输出了,咱直接做一个删除,所以现在这个完成了批量删除,然后为了咱能看到效果,我把数据先给它改一下啊,为了咱能看到里面的结果,呃,我直接写个语句啊,把数据都改成零,Update加上表名称。
08:28
就是里边啊,加上这个set意思这个deleted等于零啊,咱们把里边的这值都做一个修改,然后到里边我们来看目前值是不是都是零,那我现在把这两条数据给它删掉,咱们执行下,看一下最后结果,这就是批量删除,目前咱们做的还是这个逻辑删除啊,当然我提到了啊,就是如果说啊,你把这个注解去掉,那它做的就是物理删除,但是实际中咱一般用的都是逻辑删除,它就是通过一个标志位,默认效果就是零是没有删,一是删掉,然后现在执行完成了,咱们看一下表中的数据,很明显看到两只是不是都是一了,那就表示咱们现在删除了两条记录,所以以上就是给各位演示的MP在map层中。
09:28
进行删除的操作,这几个咱就都演示完成了,所以各位啊,把这几个操作要特别熟练,特别注意,我刚才最后说这个逻辑删除是怎么样一个特点。
我来说两句