00:00
接下来我们需要编写点击按钮发送请求删除我们当前菜单,那么我们先来编写这个功能,我们来到我们的后台系统里边,我们找到这个菜单的controller controll n,我们来搜索一下有一个叫category controller,好,在这个三级分类里边呢,有我们之前逆向生成好的这个删除功能,这删除功能呢,我们会发一个delete请求,携带上我们要删除的所有菜单的ID,这是一个数组,然后呢,它会调用service进行删除,但注意这一块呢,我们整个数组啊,它是request body。Request body就是获取到请求体里边的内容,把它转化为这个数组,那只要以后大家看到request body这个注解,那他就是想要获取请求体,那想要获取请求体,那就给我们有一个要求,什么要求呢?就是说只有我们的post请求才会有请求体,那我们的get请求是没有请求体这些数据的,所以我们必须发送,必须发送post请求,它会将请求体里边的spring mvc哎,我们spring MC会自动将请求体的数据。
01:15
请求体的数据,我们请求体里面的数据呢,我们一般发送过来是一个杰森,它将请求体里的数据转为我们对应的对象,比如转为我们这个浪类型的数组,那逆向深中的这个方法呢,我们也可以来测试一下,脱离这个前端页面,我们如何测试呢?我们推荐大家去来下载一个叫postman,它呢可以模拟发送HTV请求,我们就进它的官方里边。我们在这儿下载就行了,下载完以后呢,直接安装,我这呢已经安装好了,我直接打开我的postman,我来打开我的postsman,我们来模拟删除功能,我们相当于呢,要给我们这一块来发送请求,当然我们现在都是给网关发请求,我们统一有网关代理,那么就在这来测试,大家安装好打开postman就长这样,那怎么测试呢?那在这点一个加号,那就是新建一个请求,那想要测试来写local host冒号八八,诶这一块呢,有之前我测试的这个记录,我就点在这。
02:25
大家要写的话呢,就是全称http logo host、88API,我们要给网关发送什么请求呢?前缀先加上,那我们后边的请求呢,是product category,好,我们复制来的delete请求,而且我们说这种delete,只要我们以后看见request body request body,我们都必须发送post请求,所以呢,我们在这一块先改请求方式是post,然后我们想要给请求题里边携带数据,注意这有一个东西叫body,我们就在这携带数据,而我们要携带什么样的数据?
03:01
我们的这个项目呢,默认前后端都是传输的是杰森数据,Request body获取到杰森数据自动转为对象,所以呢,我们在这儿找到raw,我们来选中我们传的是杰森类型的数据,那既然是杰森类型,我们现在呢需要一个数组,数组里面有我们想要删除的这些ID,所以呢,我们给这儿来写上一个数组。数组怎么写呢?那杰森对象呢,我们就写一个中括号,我们想要删哪个,比如我们数据库里边,那在这呢,添了一条测试记录1432,我们把它删掉,来写一个1432来发送请求。诶,我们发现呢,这块是success成功的,包括我们来看数据库刷新1432确实没有了,那说明逆向生成的这个方法呢,还是很好用的,已经删除了,但是我们真正的删除功能呢,没有这么简单,我们删除首先要做的第一件事,那就是检查,检查当前要删除的这个菜单,当前删除的菜单是否被别的地方引用。
04:11
如果引用了还不能删,所以我们呢,自定义一个批量删除方法,而且这是一个批量删除,哎,我们呢就叫remove remove什么呢,我们就叫remove menu。把ids我们还是一样,把我们传过来的所有这些ID我们放到这,我们调用进行删除,我们没有这个方法,我们就来写上这个方法,我们al enter创建出这个方法,我们在接口上呢创建了这个方法,然后我们在实现类里边给它添加实现,我们来找到CR n category service的实现类,我们在上边呢,Al给它添上我们最新方法的这个实现,那我们想要删除呢?原声调用base member的批量删除方法,有一个delete bench ids,我们直接把它呢放进去就能进行批量删除,但是我们说。
05:07
想要做这个删除之前要先检查。那这个检查呢,我们先留在这,我们现在还不知道业务里边什么会引用我们相关的菜单,那留到这,我们以后要做,我们来写一个这个,我们写一个叫todo,诶我们将要做的事,将要做的事呢,就是先要检查这个。留下它以后的好处是什么呢?以后当我们想做它的时候,我们可以很方便的在下边偷渡,在这一块来找到,诶我们这一块呢,有我们的代办事项列表,我们点开它,我们就有第一个,这还没干,干完了以后呢,我们就可以把这个土豆删掉,那我们现在没干完,我们就放在这儿,这相当于给我们提供了一个快速的备忘录功能,好,我们放在这儿,我们现在呢,还是调用它的直接删除。但是我们说这个删除呢,后来在我们开发期间用的不多,我们现在开发期间呢,多会使用逻辑删除,我们这个删除是直接删除数据库里边相关的记录项,这是物理删除,那删了以后就真没了。那么逻辑删除呢,相当于只是使用我们某一个字段作为标识位来表示它是否被删除,比如我们在这张表里边,我们的受status就可以作为标志位,如果是一,那代表我要显示,那就不删除,零呢就代表我不显示,我就要删除。
06:32
那逻辑删除要怎么做呢?在马贝蒂里边,想要用逻辑删除也非常简单,首先第一项好,我们来到主程序的这一块配置里边,把逻辑删除的步骤你来写一下。那我们如何使用my beat蒂plus给我们带的这个逻辑删除,诶我们现在呢使用逻辑删除,当然逻辑删除的相关信息呢,还是参照my beat蒂plus的官方文档,在官方文档里边呢,说的非常清楚,逻辑删除该怎么用,在这指南里边,我们在下边呢有一个叫逻辑删除,那们想要逻辑删除呢,我们先给它配置一下,我们配置一个全局的,如果逻辑删除字段的值,比如逻辑删除字段一就代表是删除了的这个值,那我们用一表示零就代表没删除,那我们希望呢,记录就有一个状态标志位一和零,那么就要求以后我们所有用到逻辑删除的这张表里边都要设计上相关的状态标志位,那正好我们这个三级分类表里边,我们就用这个标志位叫受status显示与不显示,那不显示我就认为它是删除了,显示我就认为不删除。
07:47
所以呢,我们第一步先配置全局的这个逻辑,删除规则,好,我来复制一下,当然这个配置呢,是可以没有的,这是一个统一的全局配置,我们先来给它配上,我复制过来。
08:01
我们来到my plus的相关配置里边,好,我们就在这配my biggest plus DB里边,那我们还有log辑删除,有logic delete value。逻辑删除的字段,我们写个一,一就代表已删除,还有一个logic not delete value,那零零就代表没删除,这是我们做的第一步,先来。可以配置全局的逻辑删除规则。全局的逻辑删除规则,然后呢,接下来第二步我们需要呢,配置上逻辑删除的这个组件,当然这个组件呢,他说了三点一点一开始已经不需要我们配置这个逻辑删除组件了,我们现在引用的满贝plus的版本呢,我们来看一下,我们点进我们的common里边,我们买plus呢,我们用引用的是3.2版本,那相当于我们第二步就可以跳过了,那如果以前的低版本呢,我们还是需要配置逻辑删除的组件,也就是我们的这个B要加到容器中,前两步这个都是可以省略的。
09:12
这个呢也是可以省略的,但这个高版本里边是省略的,接下来第三步,这就是最重要的一步,我们需要呢,给我们实体类上某一个逻辑删除字段,我们要加住table logic这个逻辑删除注解。那我们现在呢,就是操作菜单表,我们现在来写上,加上加上逻辑删除注解。就是这个table logic复制过来。那给哪加呢?就给我们这个B,给我们的这个B上加上逻辑删除注解,那现在呢,相当于想要操作菜单,诶菜单菜单的这个删除呢,我们是在受sta,我们准备将它代表删除还是不删除,那零不显示一显示,那好我们就来加上一个注解,叫table logic,好,这个呢代表这是一个逻辑删除字段。
10:10
那什么是删除,什么是不删除?我们可以参照全局配置,一代表删除,零代表不删除,但是我们现在发现我们现在正是反的,我们这个一呀是要显示的,是不删除的,而零呢是删除的。所以如果我们某一张表的逻辑删除字段与我们全局的配置是反的,那怎么办呢?我们可以直接在这张表上给它定义上自己的规则。所以table logic里边呢,有一个叫value,这个代表逻辑未删除,我们用哪个值表示,还有一个Del y6代表逻辑删除,用哪个表示,那么就给它配上就行了,那Y6这是逻辑不删除,逻辑不删除呢,就是想要显示,显示呢,我们是用一表示的,那逻辑删除呢,就是不显示,不显示我们想用零表示的,我们把这个配好以后呢,我们来重新来启动我们的product项目,好,我们来启动。
11:08
那启动以后呢,我们来重新再来发送请求,测试删除,那现在呢,来删一个我们这个1431号数据,那在这来写一下14311431,那以前删除呢,是直接将数据表里面这个字段删除了,那现在删除就应该改为零一,那现在测试一下发送请求。好,这个还是connection refuse的,那我们服务还没启动稳定,那么我们稍等一下再发。那么继续来发送请求。那现在呢,看到message已经成功了,我们看数据库,我来刷新,诶,那么现在这个show status就变为零了,它就代表呢,已经被删除了,包括我们来打印出它的SQL语句,我们可以看一下,我们来让它打印一下SQL语句,怎么打印呢?我们调整一下日志的级别,我们将我们。com级别呢,我们将com.at硅谷下的所有,哎,我们come at硅谷,我们现在是鼓励ma,我们就将这个下边的所有呢,我们调成debug级别,这样我们的这个do里边也会打印debug日志,好,我们来重新启动一下。
12:19
我们一会儿来看我们控制台打印的这个SQ日志,我们看删除的时候呢,它掉了什么方法。那么假设呢,又要删除一个叫1432号数据。行,我们还是删除1431,我们先把它改为一是显示状态。我们把这些控制台清空来准备删除1431号数据,好,Send。成功了,成功,我们来看我们的控制台打印的SQL语句,这个SQ语句呢,删除其实是一个更新操作,Set这个字段的受status变为零就行了。包括我们数据表里边呢,这个一也已经改成零了,那以后呢,我们很多表都会要用到逻辑删除,大家可以给表字段里边设计多添一个字段来代表它是否已经被删除了,那我们这个菜单删除方法呢,我们就先写到这儿,主要来测通逻辑删除,下节课呢,我们来发送请求进行删除。
我来说两句