00:00
咱们用代码写这个添加信息的接口部分,按照我刚才说的这个过程,首先第一个过程。咱们肯定是先建一个VO类,用于表单数据的封装,这一步肯定做到,那我结合这里边第一步咱生成了,然后第二步做这个事情,创建一个V类。用于封装表单提交的数据,那咱把它做一个创建。我这里边写下啊,在我这个anti里边有个view包,我在里边就直接创建,然后这个类我给它起个名字,我就叫这个cos。啊,Co这个info叫这个view,建一个view类,就是一个用于封装一个view嘛,叫value object指对象用于它做封装。这是我们建的这么一个类,然后在这上面加上一个叫date注解,在里边呢,写上你那些具体的属性。
01:04
这属性就是对应咱们的课程基本信息,还有描述信息,那属性我就不再敲一遍了,我就从课件中咱就直接复制过来了,因为里边都有。啊,那我把咱的第七个这个打开在里边,咱先写它。包括这个页面最后再来做啊,咱写这个。那我现在找到我们这个VO这个类啊,其实里边的属性应该就是我这个课件中的。就是这些,我把这些咱就复制过来,它包含咱要挑的主要内容。直接复制。然后这里边啊,加那个swa注解,咱们不加这也不影响啊。另外有一个点希望各位知道啊,就是这个对象。这是什么意思呢?给大家说明啊,因为咱们现在啊,在里边有个字段或者有个属性是这个课程的价格,而价格来讲,咱一般一个价格是不是就是圆角分的效果,也就是他精确到这个叫做0.01的这么一个效果,就是圆角分嘛,而这个价格如果说你用个double,或者说用个float,它的精度会有问题,所以大家用这个对象表示你的价格可以精确到更准确这个值啊,这是用于价格的这么一个对象,包括里边这些属性,咱看一下啊,有这个课程ID。
02:27
讲师ID这个分类ID,包括课程这个名称,价格、课时数,封面还有一个描述,主要这几个属性,所以咱们把这个第二步做到了建一个V类。然后借完之后,下面第三步再来开始写那个具体那个接口部分就是第三步。也就是我们来编写CR了。和它的service的部分来实现里边这个内容。那咱们写一下第三步,在第三步的时候呢,首先我来到这个edu cos这个CTRL中,因为咱做的是课程吧,我写到这里边包括character章节,这是小节,现在是课程,在课程里边,首先咱把它的service先注入,我把那逻辑都写到service中,在service里边我们写一个叫edu这个cos。
03:24
Service是它起个名字叫cos service起完之后下面咱就写这个添加课程。基本信息的方法。那我们来做一下啊,咱就直接写一个。Post提交里边给它起个名字,就是添加课程基本信息,比如我叫这个,呃,就叫A的。然后写完之后,下面写方法,咱来一个public r。这方法名字我就叫A的。Cos。
04:00
把这个写出来,然后这个里边先成一个值,咱先不让它报错,就是r.OK。这个写出来了,然后洗完之后,按照我刚才说到的,因为咱现在啊,建了一个VO的这么一个类用于封装,所以咱们最后提交表单,这VO这个对象肯定要提交过来,咱在接口中得到这个数据,得到方式呢多种,咱之前都是这么来写的,加一个request body,现在我还这么做,就是表示用这次传递后面加上你那个view类。就是咱们刚才建的这个。Info will用它我们做一个重装。要这个数据。就是course info view,然后得到之后咱们就调用service中的方法,最终的添加,我把这过程都写到我们search中,我就叫save course info。在里边把这个VO这个对象传进来,这个啊是咱写的CTRL的部分,然后写完之后,最后我们写这个service。
05:07
主要代码就在中,然后做添加。啊,当然你都写到CR中也没有问题啊,咱给他就是更规范点,在里边写的一个具体过程。那我把这个打开啊,在这个。Co就是edo cos,这里边咱生成里边这个接口中的方法。添加课程信息这个啊结构都有了,然后最后在里边我们来做这个具体功能再来实现,那怎么做?刚才咱分析过了,咱要加课程信息,应该是像两张表中加数据,一个是课程表,一个是课程描述表,或者说叫课程简介表,咱要把数据加到两张表中。这各位要知道,那下面再来加一下啊,我先写个注释啊,第一个就是。咱们向这个课程表里边添加课程的。
06:05
基本信息,然后第二个像这个课程的描述表,或者说简介表里边添加课程那个简介,所以咱向两张表中加数据,那怎么做,咱看第一个啊,像课程表加数据,因为当前这S就是课程的,所以咱直接调就可以了,怎么调,上午说过啊,两种方式,第一个你写个base map可以。或者说你加个this都可以啊,我就写个base map,用base map里边的一个添加方法添加应该叫insert。大家看到啊,在这添加方法中,里边传的是不是这个edu cos这个对象,他传的是这个对象edu Co。所以咱们先把这个做到,但是这个你注意啊,我现在传过来的不是edu course,是我们刚才自己写的这个试体类,所以咱需要把这个cos info VO转换成edo cos,然后再穿进去做添加,咱需要这个转换。
07:09
因为它里边不是传这个VO啊,所以咱们做件事情啊,把这个对象。给它就是转换成这个edu Co这个对象,然后再传进去就可以了。那怎么转换?不知各位是否记得啊,咱上午刚写过。我们上午写过这么一个东西。我再写一下啊,不知道各位是否有印象叫BU的点,这个叫copy pro,它可以把一个对象中的值给它设置到另一个对象中去,咱现在就这么来做,那我来写一下啊,先new一个edo Co这个对象。E丢course等于new上一个E丢course,然后拧完之后,把这个info view里边的这个值啊,就这个名字info view里边这个值给它set到这个edu扣中去,然后set之后,最后咱给它就是。
08:06
直接传进来这段方法就可以把课程信息加到我们的课程表中,咱这么来做,这方法咱上午写到了啊,它的原始做法就是你把这个值先get出来,然后再set进去,纸现在不需要了,你这么写之后cos info view里面的值就会放到edu cos流量中去。用这个可以得到,所以咱们把这个第一步完成了,然后完成之后这里边呢,会有一个返回值。我们看这返回值啊。这个返回值给大家说一下啊。这单之前没提到过啊,这里我说一下什么意思啊,这返回值什么意思呢?就是你添加之后,它会返回你成功加了几条记录,比如咱说那个影响行数啊,应该在MP中提到过,比如现在这里边值,假如说我叫insert,各位应该知道这insert如果说这个值啊大于零,就是它是一,那表示是不是就成功了,如果这个值是零,那表示它是不是就失败了啊,所以这个位置我给他做个判断。
09:12
啊,咱为了更明显啊判断一下。那怎么判断呢?如果说这个音色这个值,比如它这个值就是小于等于零,或者它等于零,那表示现在肯定是添加失败了。啊,添加失败,添加失败呢,我就直接给他抛个异常了,肉new一个叫鼓励,一丢一个session,比如我叫。20001,然后写一下就叫做添加课程信息失败。咱们做个判断啊。这里边如果说它大于零,那咱们这里边再往下进事情,如果它等于零,那肯定就是失败啊,就是这么一个结果啊,咱们把它。写完了第一步添加课程的基本信息。
10:02
这个各位给他知道啊,然后这个写完之后,咱下面呢,再往下来做,下面做的事情就是像课程简介表中,比如说刚才呢,咱加的是这张表里边有数据了,下面要这张表上加数据,那这怎么加。希望各位要注意啊,这该怎么去做,比如这个表,我建议各位先复制过来这个名字啊,这张表。向这里边加数据,那这个怎么做呢?咱来做个分享啊。首先第一个呢,就是如果说啊,你用base map,那base map呢,只是向我们的edu cos,就是课程表上加数据,你加描述表,Base map做不到,那加描述咱要怎么做呢?大家看中有个service。这个service叫edu course description service来用它是不是才能做到,因为这是操作描述的,那这里边我们要怎么去写呢?
11:01
你看哈,我在edu Co中怎么去用这个edu courses description里面内容呢?这怎么用的?其实这个过程中呢,用一种咱们在此阶段学到一种最简单方式,我用谁。把谁注进来是不是可以了,那我就注这个描述叫这个e Du Co。Description,然后它叫course description h啊,Service啊,Description service,这叫service。然后咱用的是edu course description service,就是简介的service,用它就能操作,那咱把这个拿过来,然后我们调里边的方法,它的添加应该叫C,在里边传一个描述对象应该就可以了。啊,就是这么来做啊,那描述对象我给他也是new一个。有这个。Co description等于new上一个edu这么一个简介对象,然后咱们向里边放数据可以了,当然你可以用in啊,我就直接设置,因为它只有这么少数几个值,主要是里边这个描述。
12:12
咱们把它就直接。拿过来啊,给他。放进去。这样的话。这个对象就有了,然后咱们把这个描述对象放到这个方法中去,这段代码就能实现向描述表中加数据,咱们现在就做到了啊,主要这么两个过程。我再说一遍啊,第一过程就是。先向课程表上加数据,咱就把这个VO对象变成edo cos,然后用这个方法加课程表,第二个加描述,但是描述呢,因为我在课程这里边加不了描述,咱把描述的service给它就注进来。啊,课程描述的注入,然后注入之后用原方法再加描述,就传这个对象就可以做到。
13:01
这个啊,是我们说的这么一个基本过程,所以按照这个过程,我们现在这个基本的功能应该可以初步做到了啊,但是过程中呢,肯定会有问题,那我们先。写到这里啊,咱们先做个测试,看目前是什么样效果。这个啊,我把服务器我们给它启动一下啊,咱先试一下我们目前是什么样的效果,然后咱再往下进一步完善啊。这个启动下啊。然后咱用swa先来测试一下,包括你的课程基本信息,还有描述信息。咱这个代码已经初步做到了啊。我先启动。然后启动过程中呢,咱为了就是更加明显,所以我先把这数据先给它清一些,要不然的数据不是特别明显啊,数据太多了,咱找不到啊,比如我这么做啊,我就把描述的这数据先给的都删掉,为了咱一会儿更明显。
14:04
也删一下啊。就是比里头。From加这个edu description先把描述数据先都给它删掉,让里边啊先没有那种。大家看现在描述没有东西了,然后咱们加课程加描述,看一下最终的这么一个结果,那我们来试一下啊。打开这个swagger啊,用这个打开啊。答案是8001端口。加上这个swagger。杠Uy.HTML打开之后找到我们当前这CTRL了,就别找错,如果你怕错,你可以加这个咱那个注解啊,加一个中文提示,咱就找这个啊在里边咱的方法,这个方法,因为这个方法要做的操作就是通过一个叫做。Request的body,也就是Jason数进行传递,所以大家给他要传入正点数据,然后做添加。
15:05
但是这个过程中啊,应该有一个问题啊,这个问题不是我想掩饰的,这个问题我就直接避免掉了啊,什么问题呢。这各位应该知道啊,咱们在这个时间上边是不是加上这个自动填充了,这要没加有问题啊,这个我先加上,但是我想也是不是这个问题啊,这个问题我就避免掉了。加个table field等于叫field field。Insert,然后还有一个是这个insert update这单先直接给他改一下啊。这是添加,就是那个修改,然后在描述里边,同样这个特点,这是insert,然后这个是insert update,把这个啊,我们都给它加上。这个各位注意一下哈。然后我再重启,最终再试一下啊。咱看目前是什么样效果。我们等它启动起来。
16:01
然后还是用swa通过传Jason数据实现,因为咱们用的是request body加POS提交,它会传一个这数据我刷新。刷新之后把这个值我们给它改一下啊,因为里边传了很多都叫string,咱为了区分给它稍微改一下。首先我们看一下啊,这里边那个课程名称就是title,我就叫这个101010。包括里边有一个描述或者description,我叫101010啊,为了区分,其他的都有默认的。包括有一个ID啊,这ID应该不需要,因为ID最终会帮咱们生出来,就是里边的,我们看一下啊,那个VO里边的。课程ID应该不需要我们传入这ID给它去掉。主要这么几个值,然后值轴出来之后,下面我们点这个try it out,咱先看结果。大家看这里边提示我们是成功啊,这里是没有错,然后咱就看表中的数据,找到表里边先看课程。
17:08
刚才我加的应该是101010。这个数据。这个加进去了,包括这个时间啊,咱加自动填充都没有错,这是我们刚才加的课程,然后咱再看那个描述,描述里边大家看里边有这个叫幺零,1010是不是可以做到,现在通过我们最直观看到有课程有描述了,两个信息都加进进去了。但是目前呢,有个问题。我说各位是否能看到目前什么问题啊?和大家是否能看到,咱们刚才刚说过,上午也讲到这个问题了,什么问题呢?咱看刚才就是包括上午咱画的这张图上。大家看啊,课程跟描述什么关系。是不是一对一啊,但是你注意啊,我目前这么加的话,这个是课程,就是这个101010课程。
18:05
然后这个是描述,但是目前这课程跟描述之间没有关系吧,因为咱们一对一上午提到过,它叫主键ID,对应就是主键ID一样,你看描述ID叫6594,再看课程ID。课程ID是不是叫九四五八两个数不一样了,所以他们现在是没有关系的,他们不是一对一,虽然说代码中咱把数据都加进去了,但是加完之后咱发现这客人跟描述之间没有关系,他们没有建立起一对一的关系,所以这是咱目前看到一个问题啊,但是数据可以加进去。不知各位是否能听懂啊,我再重复一遍。因为课程跟描述是一对一的关系,怎么就是一对一呢?让他们的ID值是一样,比如JD是9458,那你描述也需要是9458,但是目前是不一样,所以他们之间没有关系,这肯定是不对的,那咱把它需要改一下,如果你不改的话,他们没有建立关系,最后你查肯定会有问题。
19:10
就是他们不是一对一,那怎么改,给大家来说一下啊。来看这个过程啊。首先。我在这里边写一下啊。就是目前有一个问题。课程和描述是。一对一的关系,也就是说你添加之后,这两里边的ID值应该是一样的,但是目前它不一样,所以这个肯定是不对的,他们就不是一对一,那怎么让它是一对一,咱代码改一下啊,首先第一个课程这个没有错,主要是描述,你看啊,在描述的时候呢,咱现在向描述对象中是不是只设置这个描述信息啊。但是这么来做的话,当我执行C,它的IDP是会帮我们自动生成出来的,而现在我们不能让它自动生成,让这个ID跟刻ID是不应该是一样的,所以我们怎么做呢?小这位置啊。
20:10
让它等于零失败,如果不等于零大于零就是一是成功,如果成功之后呢,咱就获取到你添加之后的课程的ID。那咱获取一下啊,我来一个string叫cid,等于这个叫edu co.get ID这一行代码就是得到你添加之后的ID,咱们在之前写到过,就是我们添加完一分类加二级分类得到ID,这是得到课程ID。注意别写错啊,但是要写这个叫edu cos,你别写VOVO里边没有添加,咱加的是cos。然后接完之后怎么做呢?在这个位置,咱就是手动设置一下你的描述的ID,就是我们的课程的ID。
21:00
那我们设置。点site ID里边就是这个cid这样的话就可以了,把这个我们需要做个设置。这个啊,给各位截个图啊,我就截核心部分。获取到那个ID,然后你设置描述ID,就是课程ID,这一步是我们需要这么做到的。各位知道啊,然后这个做到之后呢,咱并没有完,咱还有一个步骤,什么步骤呢?找到你描述的实体类,咱找到啊,大家看啊,在描述实体类的ID上边,目前是这个策略,这策略是由MP生成的,咱需要把策略也改一下。改成什么呢?这几个不知各位是否记得啊,咱们给它改成这个策略。叫音input。这是我们做修改。而这个input什么意思呢?我在里边特别标注一下啊,它就表示这个值需要咱们手动输入,而不会给我们自动生成input的,就是收入,就是输入嘛,需要你手动来设置或者手动输入,这是我们要改一个策略。
22:14
这也是需要我们要做到的。你不改的话,他还给我们自动生成。这个啊,是我们提到的第一个ID,要第二个。就是要修改你描述实体类中那个ID的生成策略,策略改成这个叫input,需要咱们手动做设置。这个啊是我们做的两步,然后这么都做完之后,最终效果才能实现出来。啊,我再说一遍,最后咱测试做法就是第一个描述里边,咱把课程加完之后的ID需要放进去。因为他的ID跟课程要一样,第二个就是描述的策略改成input,因为这策略不是自动生成,是咱们手动设置,你需要改成input,手动来往里边放纸。
23:02
这样的话就可以了啊,然后都可以之后最后咱们把服务重启一下,看一下最终的结果,就最终看一下是什么样的。把这个啊,重新启动一下啊。包括刚才的问题咱也看到了啊,它那个值ID是不对的,现在改完之后我们试一下。啊,这个啊,服务器启动了,然后咱们到里边我还是做一个刷新,刷新之后向里传值ID去掉啊,咱因为它会自动生成,然后里边的名字改一下啊,有时候就随便改个值啊,咱就叫这个。0302,今天是3月2号啊,0302。上面这个描述也加个叫0302,然后都加完之后,最后咱点这个try it out。提示咱们成功到表里边来看结果啊,先看课程。0302。
24:02
我刷新啊,0302应该在。看这个值啊。这样我到这里边来看时间排列啊,是他没有加成功还是怎么样啊。这里啊,第一个给它那个值。在。哪去了,抬头。诶,我没改成功吗。3月2号。啊,我改错了,我改成这个T出ID了,没改的名称啊,但是数据是加进去了,就是这个啊,就这个值是对的啊,这是我们加的第一个,包括咱看时间是这个14:42,这没有错,然后咱看它的ID是这个叫1282,各位先大概记一下叫1282,然后这个做到之后啊,咱看他的描述,描述里边有一个叫0302,这是不是也是1282。你看这个1282的值和刚才里边那个课程中那个就是。ID值。
25:00
两个是不是一样,而一样的话,他们就是一个一对一的关系,这是课程的基本信息,然后这个是课程的描述信息,这样的话咱把这接口就做到了,这就是添加课程的基本信息,主要这个过程。所以大家啊,把这个过程给他知道,就是咱们刚才分析的这么一个流程,建VO类,然后提交向两个表上加数据,一个是课程表,一个是描述表。但是课程描述。是一个一对一的关系,所以按照我刚才的过程,把这个我们最终做到。这是关于接口的这么一个开发。咱们就做到了啊。然后这张图我先保存下。就咱们啊,刚才画的这个图。是我们的第六个图。添加课程的基本信息,它那个接口部分。这个咱就写完了啊。
我来说两句