00:00
就是第二步完成了,然后第三步,第三步怎么做呢,大家看啊,当我在第二步呢,点下一步。大家注意,咱是不是就到了第三步,而第三步要干什么呢?我强调啊,咱的做法就是因为前面呢,把课程信息应该都加完了,最后一步做什么?就是把你之前信息做个确认,看你加的有没有问题,如果有问题咱可以返回修改,没问题就最终发布,主要就是做这个事情,也就是看张图上。咱把课程信息做一个最终的一个显示可以了,就来做这个功能,那比如说一会儿我在里边啊,咱就显示这么些内容啊,比如说课程封面,课程名称,课程价格,课程分类,包括什么讲师等等,把数据在页面中做的显示,这是我们要做的事情,咱就做成这种效果。那这怎么做,给大家详细分析一下啊,首先第一个可以看到啊,在我们进入页面的时候,在上面的这位置,这是咱们的课程ID,那我现在根据课程ID咱们的这些值,我们是不是都可以查出来,比如说这个课程名称,课程价格,课程分类,或者说咱有一个叫课程讲师,什么课程简介等等,这些都能查出来,就是课程的。
01:20
简介,包括课程那个所属的讲师,所以现在我们要做的第一件事情就是先要写个接口,根据课程ID把这些值给它要查出来,这是我们做的第一步操作。那这步怎么做呢?大家看这数据啊,比如说我们根据课程ID查课程的封面价格和这个名称,那这三个数据咱们到这个课程表里边,就是edu cos中应该能查到,但是里边呢,还有其他数据,这表中没有,咱家还有什么数据啊,大家看,比如这个课程分类,咱是不是要查分类表?
02:01
课程简介是不是查简介表,课程讲师是不是查讲师表,所以说这些数据咱通过一张表查不出来,咱至少要查到,就是这里边数据至要查是不是有四张表才能查出来,所以针对这种情况下,我们怎么做呢?给大家强调啊,第一种方式可以用咱们之前说那种封装这种方式,比如说我们章节小结一级二级分类,但是现在这种方式不太合适,因为咱的表比较多,那我们怎么做呢?在实际中一般有这种思路,当你查询的表谁比较多,或者说要写些复杂点的那种查询操作,咱一般都建议手写Q语句做个实现,而不用其他的服装方式,所以咱现在把这个课程信息确认,咱就是编写个circleq语句,把这做到,这是我们要做的效果,就是根据课程ID查询出课程的封面名称、价格、分类、简介,讲师,我们写条SQ语句,把这做到。
03:01
这个啊,是咱一个分析。所以各位把这个先给他知道啊,我把这图给各位截过来,然后在这里边写一下啊。就是咱们要做一个课程信息确认,而这里边就是这些数据,他要查询多张表。才可以得到,所以说我们针对这种情况下,咱一般不用那种之间的服装方式,也不用其他做法,咱一般都是去。编写这么一个circle语句进行实现。这是我们的这么一个做法,那咱下面就先把语句写下,然后再整合到我们项目中去,这语句要各位必须要会写,属于一个最基础的一个语句啊,那咱们看怎么做啊。这个之前各位看过啊,我再重复一遍啊,就是我们现在因为他们是多张表,咱家肯定要做一个多表的连接查询。要这么来做多表的。
04:00
连接查询,那多表连接查询呢,有哪些方式呢?希望各位要记住啊,我在这里边等下这个位置写一下有哪些方式呢。咱们一起回顾一下啊,首先第一种方式,大家要知道是这种方式。叫什么内连接,还有一种方式叫什么?是不是这个叫左外连接,还有一个叫右外连接,它主要有这么几种方式,是比较常见的内连接,左外和右外,所以咱们现在根据我们的实际,咱看用哪种方式更合适。啊,那我们来分析一下啊,三种方式内连接左外和右外。那三种方式啊,都是什么特点,然后各位要清楚啊,给大家我再重复一遍啊,是咱们在买所有阶段学到过的,咱看第一种方式叫内链接。内链接什么意思呢?它就表示啊,查询两张表有关联的数据,叫内链接,那我来啊,简单画一个效果,咱就看这个数据了啊,我简单画一个。
05:03
比如说我现在啊,在里边有这么多数据。咱就画这个数据啊。就说现在我们来画一下啊。画这个数据,假如说现在这个里边呢,是我们这么一个关系,就是我们说那个课程和分类表左边表,假如说是一个分类表,右边表是个课程表,咱就用它来表示啊。然后这是分类,这是课程,咱这么来画,然后这里边我们就是写几条数据来做表示。假如现在在左边的分类表中有三个分类,这是它的ID是一,这是二,然后这是三,三个分类,然后在三个分类中呢,有它的分类,比如第一个分类是咱说那个前端。第二个比如说我们那个后端,第三个比如是一个叫。运维啊,这是它的三个分类,然后在右边表中的是我们的课程,课程里边呢,为了区分,我把ID换一个值,为了跟他不一样啊,比如这是幺幺。
06:06
这个是幺二,然后这个是幺三,然后这是我们的课程,然后第一个课程叫Java。第二课程,比如是这个叫做。第三课程,比如说我们那个叫。买CIRCLE3个课程,那这里边我们要表示他们的关系,那大家要知道啊,在里边怎么表示呢?这位置就是存它的ID值,假如说Java是后端,我们就写个二,然后voe是前端。是不是写个一啊这么表示,假如现在一个特点啊,这个买circle,咱们不给它算成韵尾,它就没有分类,那我们就给它来个空,就是一个捺啊,咱这么来表示,那现在这里边如果说我们查的话,里边有特点来用它来说明什么叫内链接,什么叫左外,什么叫右外,给大家强调啊。那我来说明第一个。如果说咱做内连接操作,那什么叫内连接呢?它就表示查两张表有关联数据,什么叫有关联数据呢?咱们来看啊,前端是不是对应Java。
07:11
啊前端啊,对应这个voe,后端对应是不是Java,但是运维没有对应吧,所以咱查的话,内链接要查什么,他要查出数据,就是咱们的这两条数据,这运维跟MY搜狗查不出来,因为他们没有关联,他只查两张表有关联数据,没有关联是查不出来的,这叫内连接,这各位知道,然后看第二个叫左外连接。什么叫阻碍连接呢?比如我现在让这个左边表,就是这个分类表,阻碍连接课程表,什么叫阻碍连接?说的通俗点,你左边表所有数据都查出来,右边表只查关联,大家看一遍啊,左边表就是前端后端运维,不管运维有没有关联都查出来,但是咱看右边表中。
08:01
Java view关联,MYSO是没有关联,所以买so就查不出来,它查出效果应该就是这一部分,然后加上我们的vouee这部分,把这个查出来,这个叫做。左外连接左表所有数据,右边表关联数据,然后右外正好相反,右边表所有数据左边关联,比如咱们右外那这幺幺幺二幺三都插出来,但是前端后端有运维是没有,因为运维没有关联,这是三种连接方式,内连接,左外连接,右外连接会把这要清楚啊,属于最基础的三种查询。这个啊,我们做一个说明。然后这三种在操作中啊,咱一般用的比较多的是内连接和左外连接,其实右外跟左外是一样的,只是换了一个方向,所以咱一般很多人喜欢用左腕,用右腕也没有错。那咱下面按照这种连接,咱看一下我们这个用哪种比较好啊,咱来做个分析啊,看看我们这个特点。
09:01
首先啊,很多同学可能会想,我们这个查询啊,用内连接可不可以,其实可以,但是咱们里边有一个特点,各位要注意啊,就是我这个课程中啊,是不是可能没有简介,简介是不可能为空了。报的课程中可能也没有分类,可能也没有讲师有这个可能,所以咱这里边用那链接不太合适,因为他可能没有简介,没有这个内容,那咱用什么合适呢?注意这个连接阻碍连接。那我们什么效果,就是咱们课程不管你有没有简介,有没有分类,有没有讲师都查出来,但是简介分类讲师只查关联数据,所以咱们这个查询用左外连接最合适,课程都查出来,其他的只查关联数据,这是我们做一个分析,那咱们按照我的分析,咱把这个。语句我们来写一下啊,就写一个阻碍连接这么一个操作。那我脚这个位置啊。
10:00
我就写一个select,先写个星号,后面咱再改啊,然后咱加一个from,先写第一张表,就这个叫edu,比如叫ec。然后写完之后,让他先左外连接,咱那个就是课程简介表,那左链接怎么写,然后各位要会写啊,这写法很简单,第一个叫left。座椅,当然live的后面可以有一个叫al al可以不写,省略也是对的啊,我给他也加上写的完全点,然后加完之后,后面加上就是你要关联那个表,咱关联叫edu cos。啊,写错了啊。Description,然后关于这个表,然后里边几个别名,比如我叫ECD,写完之后加个on on后面加上两张表的关联条件,因为刻程跟描述它们就是ID,那我来一个ec.id等于ECD点。
11:02
ID就是他们根据ID关联,这是第一个查异的课程跟描述的一个关联关系,用live的auto draw啊这是第一个关联,那抄完之后咱并没有完,咱还有第二关联,因为我们课程还要查他那个就是讲师大家继续关联。我写一个叫赖葡萄。Auto join关联讲师表就是teacher,比如叫ET,后面加个on,加上条件,那条件是什么呢?咱看一下啊。课程里边有个teacher ID,他要关联讲师表中是不是ID,那我们写一下就是。ec.tid。等于et.ID这是第二个关联讲师表,然后各位能看懂啊,然后除了它之外,咱们还有这么一个数据,看这张图上还有这个就是分类,把这个查出来,但是分类来看啊,分类要查的里面有个特点啊,咱看表中。
12:01
这个分类它是不是有两个ID,一个是一级分类,一个是二级分类,但是一级二级分类存的是不是都是这张表格,他们都是存ID,那这个咱怎么查呢。给大家强调啊,就这里边有一种思路啊,如果说啊,你一张表中有多个字段都同时关联同一张表,那咱怎么做,一种很简单方式,咱可以查多次。什么叫查多次呢?我先用一分ID查这表关联出来,再用二级分类查表,再关联一次。咱们现在可以查两次,第一次查一级分类,第二次查二级分类,通过两次把数据都查出来,这是一种比较典型的方式。那我来写一下啊,再来一个叫left out,关联那个就是分类表。Edu。啊,这个位置啊。SUB。
13:00
Subject,比如叫E1,然后咱们关联,让这个课程里面那个一级分类ID就是这个subject per ID等于这个es1.id,这个查出来就是我们那个一级分类,我就叫ES1,这是第一个,然后咱们再关联一次,查它那个二级分类。和小这位置left out缀,我们叫edu subject还是这张表,但咱换个别名,我叫ES2,再做关联c.subject的ID,这是二级分类,等于es2.id。这样的话,咱就把这分类拆了两次,1S1是一级分类,1S2是二级分类,就不要写错,然后都写完之后,最后有个条件,咱们要根据课程ID查里面这个数据就根据这个ID查询,那我们来几个ID,就是ec.id等于你最终那个ID值。
14:01
这就是咱们写的一个最终的这么一个效果啊,咱就按照这种方式把数据给他查出来,是一个最基本的语句。那这里边写完之后,咱们这个值写的更具体点,因为我写星号是它全部咱写的具体的值。给他就写一下啊,首先ec里边有这个课程ID。然后比如说有一个课程那个价格啊,包括再写一个课程那个,比如说有一个课时数啊,先写这几个值,然后不够咱再加,然后这个写完之后,第二部分咱写那个描述,描述叫ecd.questiontion这是描述,第三个写讲师,讲师呢,我们就取它那个,就是呃,讲师的名称吧,Name。啊,这是讲师,然后除了讲师之外,最后一个有分类,但是分类咱有两个,那我取一下,第一个是ES一点开,这是一级分类,然后有个es2.title,这是二级分类,所以咱们把它都取出来了,这是里边的。
15:06
这么几个值啊,主要这么多,然后为了区分,我把它呢加个别名啊,另外还有一个课程的名称,应该也叫抬头,咱为了区分加个别名,就是加个S,比如这个是一级分类。咱叫这个y subject,这是二级分类,我叫这个to。Subject,这样的话,咱把这个我们就写出来了,是一个最基本的最后语句,根据这个课程ID查询你的课程的基本信息,里边是关联多张表,咱们写了一个左外连接作为关联,主要是这么一个写法。咱们做到了啊,然后做到之后咱们找一个数据来查一下,比如说我就查这个吧,啊,咱来试一下。把这个查询一下啊。这是一个课程ID,然后在里边把这个语句我们做一个执行。
16:00
咱看这位置啊,他报了一个错,那咱看他报什么错啊。咱们看到啊。就是这里边报错里面是语句,可能哪个地方写的不对啊,那我们来检查一下啊,它这里提示我们说在这个位置啊,其实错误很明显啊,你看啊,他说这个位置暴走错误。叫兔,然后什么错呢?就是少加个逗号啊,没有别的错误啊,那把它再执行一下啊,再执行咱们看数据是不是有了,这就是根据课程ID查出他的信息,那信息咱看一下啊,这是课程ID。课程名称、价格,课时述,这是描述,这是讲师名称,然后这是一级分类,这是二级分类,现在这语句我们就写出来了,所以各位把这种语句一定要特别熟练,根据课程ID查出课程的基本信息,咱就用这个所谓连接。把这个我们就写出来了。
17:00
啊,这个啊,我们写的这么一个部分啊,各位把这个给他要特别熟练啊。然后这个写完之后,咱最后啊,在我们的项目中就把它可以整合进去,最终来实现出来,但是目前这个语句各位要下面的会写。这个啊,咱就写完了,然后写完之后,下面咱在这里边把它来整合一下,那我们先写后端,前端简单,主要是后端里边有些地方啊,那今天应该能说一部分啊,那我们来说一下啊怎么做。那咱们这么来看啊。各位注意啊,这个结构。看看这个结构中,咱们之前呢,写结构的时候,咱应该只写到我们的service这部分。咱们之前的功能中好像咱没写过map吧,但是各位看下这个map中,你看map结构不知道是否记得啊,是咱们在买悲的阶段学过的,在micro中呢,比如咱看一个里边有接口,然后这个接口是不是有对应的配置文件呀,在接口中你可以定义方法,在配置文件中咱是不是写那个SQL语句了,所以咱现在就要用到这个配置文件,在里边要写我们的SQL语句了啊,这是我们的做法,那咱们现在我就先把map写完,然后后面咱再调用,因为重点咱要写map。
18:19
那咱们来写一下啊,首先第一个。在这位置呢,咱们首先先定一个方法,就是根据课程ID查询课程的基本信息,这个方法把方法我们先定义,因为他查询呢,会有一个返回对象,这对象咱先提前定一下,你之前的好像都不太合适啊,咱重新定一个专门一会儿做封装。我写一个啊。有这个对象,我起个名字就叫这个cos,这个因为是课程最终发布嘛,我们叫这个publish。这个VO啊,就叫这个名字。这是咱们最终对象,然后在里边呢,我们定义我们需要的这些属性,这属性我就到课件中,咱就直接复制了,就是里边啊有一接属性。
19:11
我到里边找那尸体类,把属性咱就拿过来。应该就是。这些这个啊,咱先复制过来。咱就显示这么几个了啊。当然你愿意可以显示更多啊,这些大部分应该包含了,咱们加上这么一个。Date就是这个注解生成get的方法啊,所以这是第一个,我们定义一个属性里边有它的值,包括里边这些值,比如说咱再加一个那个ID了,课程ID。就是有课程ID,课程名称,封面课时数,这是一级分类,二级分类,讲师名称,还有这个价格,咱就用这几个值,这是一个这一类,然后写完之后我们在map的接口中把方法再定一下,让后方法就返回我们这个值,就是这个对象,然后方法我们写一下,就叫get这个嗯,Publish cost info。
20:08
In。在它里边传入一个课程ID,咱们要根据课程ID做个查询。就是cosd这个啊,我们就写出来了,然后把十几类引入,然后写完之后大家看现在我在map中,我是不是自己定了一个方法,叫这个get publish code in for,然后定义之后,咱下面找到这map对应的叉文件。在文件中。咱们来编写它那个circle语句。那我写个注释来写语句,就是circle语句。根据课程ID查询课程那个确认的一个信息,咱们把这个写一下,这是我们在买B阶段学到的,咱现在需要写到,因为在实际中有一些复杂点的差操作,大家肯定要自己写语句。
21:00
那这怎么写?不知各位是否记得啊,在里边呢,有个标签,这个标签。叫做此select标签,咱通过它做查询,那此select里怎么写,我解释一下啊,在此select的标签中,咱就直接写那个语句,就是写的语句呢,就是咱刚才看到的这个语句,我先截过来啊,先复制过来,一会咱再改,先把它拿过来。一会儿咱再改啊,这是一个语句,然后在里边呢,大家注意在select标签这里边有几个属性,给各位都介绍一下啊,第一个属性叫ID。ID是什么呢?就是你写上你map接口中这个方法,咱的方法叫get publish Co info,那把这方法咱复制过来,这是第一个写你的这个方法名称,然后有第二个属性,这个属性叫parameter type,它表示你的参数类型,咱的参数是个string,但是这个可以省略不写,咱一般也不需要写,这是第二个。
22:01
然后还有第三个是必须要写的这个东西。叫result type。这表什么意思呢?就是你返回的类型,比如说我这里边返回是个对象,那我们怎么写,就加这个对象,这个包和类的一个全路径,要把路径给它就加上,这叫result type返回类型,所以咱们就这么来做。但我强调啊,这个属性不要写错,它还有一个属性,这个属性。叫result map。这什么意思呢?它就表示啊,是你可以自定义一个类型,大家目前不是自定义的,咱们直接写了view类,所以咱们用这个type,你别写map,这map需要我们单独做个定义给你外边。来一个map定义结果,但是现在我们用的是这个view这个对象。这个不要写错,然后这是我们这个结构写完之后在里边呢,我们就写它的色后语句就这些啊,那这语句我们给它改一下,咱就跟这个对应上,因为它的名字要对上啊,咱改一下啊。
23:07
首先咱看啊,课程的ID,课程的开头。然后还有一个价格啊,另外还有一个叫call网,这咱没有写啊,就是它那个call封面。ec.cover这都有,另外啊,这里边大家看还有一个叫课时数,课时树呢,它用的这个名字,那我们给它加个别名。A,这是里边的几个值,然后除了它之外,这里边好像没有这个描述啊,那这个我就去掉了啊,啊,没差那描述,然后这个是讲师,讲师的名称叫这个teacher name,大家给他也是加个别名,我们来一个s teacher name,下面是一级和二级分类,就是里边的这两个。这是一级分类。我把它。复制过来,然后下面还有一个叫二级分类,是这个subject level to2级分类。
24:05
所以在里边主要这么几个值,那咱们可以再试一下,一查询这些没有错啊,然后最后把这个咱再复制过来。就是你把语写好之后,然后再复制到你这个代码中来,这样的话方便我们找错误。这个可以了啊,然后复制之后在里边咱改个地方啊,就是这个地方。因为我这里边这个值啊是写固定的,但是咱这个值就是课程ID要通过我这个里边是不是要给他传过来,这个值就是cos ID,那这值要怎么传。咱之前应该学到过啊,里边有两种写法,第一种写法,比如咱一般都这么做,你加个井号,大括号,然后加上你这个参数名称,可以这么做,或者说你加上这么一个符号,叫做Dollar符号,但是咱一般不用Dollar符号,因为Dollar符号表示字串拼接,它会产生那个缩口柱问题,咱都写一个井号。这个啊,是我们写法。
25:01
另外里边还有一个特点啊,就这个参数名字要写什么的问题。这个啊,我给大家再重复一遍啊,也是回顾之前的知识,这里强调。你看啊,我现在方法中。是不是一个参数,所以可以记住啊,当你map中有一个参数,那我这个值传过来要写什么呢?你就写这个就可以。是什么随便,只要是个名字就可以啊,随便写个名字就可以,但是咱不能写中文啊,写个名字就可以,但咱一般一般写的点10亿,咱就直接写上,跟这个名字一样,但是你记住,如果是一个参数,这名字可以随便写,只要是个名字就可以啊,咱现在就叫cos ID了,这样的话把这一部分我们就做到了。就是写一个map,包括他的词后语句这个啊,各位给他知道,这是咱后面也会写到的,包括在实际项目中,这种需求经常会有,咱要自己写语句,把这做到。这个啊,我们说完了啊。
我来说两句