00:00
啊,大家看做之前,我们首先分析一下线索明细页面,上面这些数据牵扯到有哪些表,懂吗?那别的表一个线索基本信息和线索备注信息,我们前面跟市场活动,跟市场活动备注那表基本上是一样的,他俩牵扯到这两张表,牵扯牵面我们这个表线索表,这是基本信息都在这,我看到的某一条记录,还有一个线索备注表是这个这个表啊。其实大家看我们说这俩,就如果只展示这俩数据,这俩表就够了,下面大家看线索,相关联的市场活动,就这一条线索,参加过哪些市场活动也得查出来,查他的时候牵扯到另一条没有是哪个表,市场活动那个表吧,要查看市场活动标志,某些记录。所以哪一个表就这个表,所以整个明细页面迁移到这这几张表,那说这几张表大看,其实除了这几张表还不行,为了查相关的市场活动,除了查他,还得给他有关系,因为他是主表,我们在查看某个线索信息的。
01:10
根据他去查他参加过哪些市场活,他参加过哪些市场活动,那查市场活动,那他这种他是主角,他市场活动,那他哪些市场活动他参加,他参加过的时候,他参加过市场,我怎么能知道呢?所以他俩有个关联关系,有没有对我们前面给大家分析过,他一条线索对应多个市场活动,可以参加多个市场动,一个市场活动可以产生多个线索,多对多的关系。他签了一个第三张表,就这个表线索和市场部问关联关系,叫relation表,这是第三张表,专门表示他俩关联关系,那他俩他俩什么关联关系,就是这样呢,你比如他看就这样,这是线索这个表,然后呢,这是市场活动这个标,对,这是市场活动这个表啊。
02:03
那线索有线索的ID,线索有线索的name,它叫full name啊full name,然后呢,市场活动有市场活动ID,市场活动有市场活动内容,所以这俩有关联关系啊,有什么关联,你比如说有一个线索1001,线索可路伊是1002,线索有可路二是市场活动,这这是什么?市场活动跟市场部的人用的市场活动产生了很多,什么叫I1,然后呢,参举办了很多市场活动,知道吧,艾V2,这俩表有关系,一个线索可以参加多个市场活动,一个市场活动可以参加,可以什么产生多个线种,一个市场活动可以产生多个线索,多对多的关系,多对多的关系,以前我们说过了,要从。
03:03
数据库表上面来表示这种关系。借助第三张表。在第三张表当中加两个外键,分别引用两个表的主键。那怎么怎么什么加什么外键,你说一个是可录ID录ID,然后还有一个叫activity ID,知道吗?他就可以表示这种关联关系了,多对多的关联关系怎么了?你比如说他看线索一点过参加过市场活动一。或者说市场活动一产生了线索一,那我就可以这么来做,10011111,再一个市线索一还参与过市场活动二,那是我来这个或者是市场活动二也产生了线索一,1001,然后呢,这个地方来个二这。那我线索二也参加过市场活动11002,然后呢,对111,然后呢,线索二也参过市场活动2222,知道吗?所以说在第三张表中有一条记录就表示一个关联关系,就表示一个参加或产生的关系,知道吗?
04:16
就是一个对应关系,就这吧,那我要在查看某一个线索明细的时候,我想看看他参加过哪些市场活动。大家看那应该怎么办?假如我让你给我写个搜索句,我想让你给我查一下。线索一,参加过哪些市场活动?这个操数机应该怎么写?我们一会儿要写这个操数句,那你看大家你怎么写啊,数据库大家知道这么怎么设计了,主要是如何在操作写程序操作这种数据库。那我余额再看,我想让你给我查询,查询指定的线索一他参加过或者或者他关联的关联的市场活动信息,你怎么给我查。
05:06
那你让他写so去写吧,Select form,最终你想查询的是市场活动,那市场活动表是主表,所以查市场活动,那就查呗,查他的哪些字段,假如我们所有字段都查出来,那ID和name,市场活动ID也没有。哦。那这是查询所有市场活动ID和内容,我要查询线索一参加过的市场活动怎么查对关联查询,我要查询线索一,我肯定是手里边有线索一的信息了,是不是这样的线索一的信息,假如我有他的线索一的ID了,那要根据ID去查呀,因为ID是标识啊,那根据线索一的ID,根据线索ID字段去查,这是主表,主表里边有线索ID那个字段吗?没有谁里边有。对,线索表有关联关系表是不是也有啊?那这俩都有线索ID那个字段,那根据这1001到线索ID那个字段去比就有了,这俩表里都有这俩表,这个表里边虽然有给它有直接关系吗?没有没没有,不能根据它这边字段去找,只能根据它这边字段去找,为什么?因为它跟它有关系,它跟它有什么关系,它的外键引用它的什么主键是不是这样呢?对,也就是说这个关联关系表的外键等于它的主键,这样去关联查询就行了。
06:29
让谁让他去关联它吧,那他关联它关联的时候,那么我们都说只要是关联差询就应该想到内连接还是外连接,那这个内连接外连接。对内连接因为什么对这个外键是不是为不会为空关联,我们说了第三张表一般都不会空的,为空的话它就没意义了,所内连接你就去查就行了,一会儿我们就写这个特殊句知道吧,然后呢去拆关联谁关联这个轴我要因为我要用这个表,我字段,所以我要关联这个表,那说关联起别名,那这个来标C点,明白吧,连接条件啊叫什么?这个东西来个A点叫什么?这个对ID等于对car点。
07:17
叫什么D对D知道吗?然后呢,大哥这样的话,大哥我就可以用这个表里边字段了,用它的哪一个字段对可录ID这个字段用它干什么做查询条件,然后说查询,我要查询的是CR点可录ID等于1001的。这个线索下所关联的那个市场活动的信息的啊,大家注意,那你说诶这个关联怎么不查询这个关联表准表的相应词段,我我只要用能用到他的字段,我不一定非要把它字段里边数据查出来。我这个搜索用到它字段我就关联它,不一定非要查到这字段我才关联,我作为查询条件我也要关联它,如果不关联,那我他这标准这数据,他在说表准字段我都不能用,关联上我就可以用了,不管是查出来还是作为查询条件,那么我都知么,只要能用到它的字段我就关联它,知吧,好,这时候我们要关联某查询某一个线索下所关联的市场活动,知道吧,一会儿大家看,我们在查一个线索明这个线索明细的时候,他的ID我已经有了,我就可以把它下边所有市场活动都查出来啊。
08:37
这是我们说的这样的,当然我们这个在写之前,我们先分析一下我们这个什么功能所需要的这些表,其实大家以后做工作的话,你做任何一个什么功能之前表你先确定知道啊,包括大家以后领导或者是项目组长或者项目经理给你分配任务的时候,你首先明确要操作哪些表,这些表和表之间什么关系,每一个表里边存的数据都是什么样子的,你必须得明确,你不能说领导给你分配任务的时候,你不知道操作哪些表,这个时候你回过去,你你到你,你到你工位上,你就不知道怎么做了。
09:15
然我自己再分析去,自己再分析大纲你明不?那说如果领导给你设计这些表,诶写的都很明确,诶这样还行不?啊,如果要不明确的话,你一定要写代码之前先问好他,他给你分配任务的时候,你就一定要问好他知你要不问好他以后的话你再找他,在难找到知道吧,所以你回你不找的话,你以后写代码不好写,所以呢,我们就形成这种习惯,写代码代码之前这些表都必须先明确,一个是明确需求要做成什么样的,再一个这些需求签到哪些表一定要明确,知道吧,这是我们这样,所以我们这个你说老师你以前没给我们说过这些表,以前我们做的功能太简单了,表都不需要分析,做市场活动的增产改造就是市场活动的表。
10:00
啊做查看明细就是牵扯到市场活动和市场活动备注不牵扯到别的表,现在牵扯表稍微复杂一点的,所以我们做之前先给大家这个分析一下这些表知道吧,表明确了,然后剩下就是流程了,流程再画出来,代码基本上就出来了,知道吧。好,这是我们这样,好下边呢,我们来看一看这个流程到底怎么去设计它,然后我们把这些表操作了就行了,好下边来看,然后呢,在下边我们来简单的设计这么一个流程,在查看叫查看线索明细。线索明细,然后呢,这个地方来双击打开了,然后呢,双击打开了话,那我们这个地方画流程,所有的流程我们说都从客户端发起,客户端发起,那客户端如何发起需求,说的很明白了,说用户在线索主页面上,他在查看那个列表的时候,对哪一个线索感兴趣,他就点那个线索的名称超级链接,用户点击线索名称超级链接,超级链接在哪,点击在我们的线索主页面。
11:11
主页面点击线索名称那个超级链接,他一点那个超级链接,大家看发生什么事,你看一点这个地方。是不是要跳转到明细页面了,对明细页面好跳转主要是页面上的数据,你跳转之前先查出来,并且显示到页面上了,这样用户才能看到,要不然你光跳转页面数据没有也不行,那这些数据有哪些数据,然后呢,这个是一个是对基本信息备注进息列表,那么相关联的市场东西,这些都是在数据库里边,所以你先在数据库里边插入了,知道吗?啊,而且大家你跳转的时候,这个页面在外部经刷也不能直接转,所以总之的话,用户一点出查询,应该向后台CTRLL发请求,这个CTRL做两件事,第一个把这些三个数据全插出来。
12:02
查出来之后放到做文具里边,然后跳转到迷你页面就行了。知道吗?所以说他要做这,所以我们这个地方他一点操链接应该向后台发请求知,那么后台要有CTRL处理了,那这个CTRL我就不给他说,我就直接写了,那查出来线索明细肯定是线索的CTRL来了,所以我们这个地方来可录CTRL,然后呢向他发一个请L。那他提供一个方法来接收和处理这个请求,知道吧,发一个叫查看的请求吧,查看请求啊,大家解一访问,它将来要跳转到明细页面去知道吧,那大家想一下,这个请求是同步到是一步的。对同步的跳转页面了,所以是个同步请求,同步请求需要提交什么参数?对,你看这个CTRLL处理,处理请求的时候需要什么特出他需要R2,你看他干什么事,他干什么两件事,第一个查动态数据,第二个跳转页面那查动态数据,查基本信息,备注信息和相关这条线索相关的市场活动信息,当然不管查哪个信息,是不是都得需要这个线索的ID啊,对,而且只需要线索ID就行了,我就查这一条线索的基本信息,这条线索下的备注息,以及这条线索所参加过的市场活动信息,知道吧。
13:25
啊,跳转页面不需要别的别的参数了,所以这个地方只需要传一个ID就行啊,只需要传一个ID。然后呢,这个地方我们传过去就行了。那传过去之后,那这个请求发过去了,发过去之后CTRLL接到请求三件事,三个职责,对接收请求有参数,获取参数啊,那通过行天获取到就行了,那就一个ID不用封装了,他的第一个值责就完成了。下边第二个处理业务,我们这个处理业务其实就是查那些动态数据,那就查呗,一个一个查,首先查基本信息,查线索的基本信息,那查出查查数据他都不会直接查掉槽一次,那查线索的基本信息,调线索的service可录service知道吧,然后在线索service面加一个方法,这个方法叫根据ID去查看线索的明细信息。
14:20
然后呢,在这里边来提供一个方法了,那这个方法我就直接写了,叫query Lu query Lu,然后呢,Four给by ID跟以前类似的,这里边传个参数,就是这个线索的ID。然后呢,这个service它不能直接访问数据库,它要调map,那肯定调线索map,在线索map里边加一个方法,根据ID。查我查询线索的名义解区查询执行的是select,对句叫C,然呢后by ID这边来传过来一个ID知道吧,然后呢,这个map就可以通过MY8访问数据库执行骚R语句来去查询线索的明细信息了,执行骚R语句,然后查询线索基本信息,基本信那查询完了之后把查询的结果往往。
15:23
那根据ID查,由于ID不能重复,如果能查出来一定只有一条记录,我们把这一条记录封装成实体类对象,而且只有一个实体对象,因为根据ID条不可能查出来是多条,不可能查离子的,然后呢,把这个实体类对象继续往回放,返回给CTR了,这样的话基本信息就查到了,那下边查备注信息,那查线索的备注信息,要调线索备注的service思。线索备注,我们的原则就是访问一张表,对应一个实体类,对应一个map接口,对应个映文件,对应一个甚至对应一个control,知道吧,所以那在这里边我们说调查线索备注,那要调线索备注的service叫cmark service知。
16:14
然后呢,在这个线索备注的service里边加一个方法,这个方法是根据线索的ID查询该线索下所有备注的明细信息,然后呢这个地方来加一个方法,这个方法我就直接写了叫que,然后呢remark查询线索备注在明细页面上上for,然后呢BY可录ID。啊,那你说是咋不办ID了,我们说站在角度不一样,我现在站在备注线索备注的角度上讲,这个ID叫线索ID,那如果是,那么站在线索角度,那就是线索的ID了,那就那就ID了知道吧,所以我们这个地方就线索ID,那这个传输参数,这个参数就是线索ID知道。
17:00
然后呢,我们说这个service它不能直接访问数据库,它得调他的map,调线索备注的map,知道吧,然后呢,这个地方来个线索备注叫c remark,然后呢,这个地方来一个map,然后呢,在这里边来这个地方也加一个方法,这个方法也是根据线索的ID查询该线索下所有备注的。明细信息执行到45句select叫cmark,然后呢for,然后呢BY可录ID,然后呢这个成了可录ID懂。好,然后呢,在这里边执行一个错数句,再说执行错数句,执行错数句行吗?啊执行特务局来查询查询线,查询线索备注明细信息知道吧。然后执行完了之后,把执行的结果往外发,那根据线索的ID去查,那一个线索可以有多个比度。
18:07
那有可能查出来多条记录,每一条记录分成一个备注的数据的对象,多条记录一个list,然后把这个list继续往外返,返回CT了,谁调到返回给谁知道吗?这这是我们说这个线索备注就好了,下边来查询这个线索相关联的市场活动信息,那要查市场活动信息,查市场活动表格,那调市场活动的那这个service了,所以我们这个地方调市场活动测试叫艾。叫service说了一一访问一张表,对应一个实体类,对应个map接口,对应一个映射文件,对应一个service,甚至对应一个controller,然后呢,在这个control controller这调到这个service,这个service就是说是来根据线索的ID查询该线索相关联的市场活动信息,知道吧,所以那这个方法名我就直接写了,叫query,查市场活动信息叫activity。
19:05
在明细上是展示,它是for,给QBY可录ID,根据可录ID,根据可录ID去查。查询跟这个线索相关联的市场活动信息,我不是查询所有的市场活动息。这一个线索相关程根据线索的ID去查,然后呢这样就行了,然后呢,大概我们说那这个地方呢,掉了service,那这个service它不能直接访入水,它调它的map,调市场活动的map这个地方来I,然后呢叫map这样。到这个地方丢了。然后这个地方来挪回来,然后呢,这个这是我们这样,然后在这里边加一个方法,这加一个方法,然后呢,这个地方来个叫select activity,然后呢,For by可录ID,根据可录ID查询跟该线索相关的个市场活动信息,明白这样我们就可以了,然后呢,在这里边他就通过买巴蒂去访问数据库,去查询那个骚扰据,这个骚索机就咱们刚才写这个类似的这种骚扰据就跟这个骚索机基本上类似,嗯,就是查询的字段可能多一些,比咱们这个,所以我们这个地方继续了来这个地方就是根据那么这个是我们说这个地方就是这什么执行搜索句吧,搜索句来查询什查询什么相关联的市场活动信息,然后执行。
20:48
看了之后把执行的结果往回反了。那我们根据我们刚才的分析,一个根据线索ID去查,那一个线索下边可能有关联多个市场活动,所以每一个市场活动放一个封装一个实体对象,多个市场活能离,然后把离的继续往放。
21:06
然后呢,这个地方把list继续往放,然后呢,这个地方来一个叫I list,这样的话,咱看这个ctrler,把明细页面所需要的三个动态数据全查出来,基本信息备注进去,相关联的市场工作信,那查出来完了之后呢,下边要跳转到明细页面了,那跳转明细页面这个地方继续拉,跳转之前先把数据传过去。怎么传,通过作用域传,所以我们这个地方把数据保证作用域作用玉,那我们这个作用欲就是。然后保存完了之后,跳转到民营界班,那跳转民营界面,我们这个地方来个民营界知道吗?其实这也跟我们以前这个设计的那讲的那种思想是已样,为什么思想第二个需求处理完了,一数据都准备好了,要返回数据,返回什么数据就是这些动态数据,为什么返回这些动态数据,因为用户想看呀,他为什么要他对这条记录感兴趣,他想看最详细的一集,点上他就看啊,所以你就要把这些动态数据都要返回啊,返回以什么格式,返回前面发的同步请求,浏览器发的,浏览器能解析数据只有网页。
22:25
所以要把这些数据以网页的形式返回,按理说这个要访问网页,但是CTRL不适合访问网页,所以它要跳转到明细页面去显示,跳转到网页上面去显示。其实这是跟我们以前讲的那种思路其实是一样的,知道吧,知道吧,就是把数据要返回了,以合适的格式返回,我们以网页的形式返回,所以就要跳转,把数据放做运动,跳转过去。他这个流程跟这个跟看我那个需求文档,这个这个项目原型上面的流程基本上一样,就一致的,下面跳转过去,通过作用率去传递数据。
23:02
那通过request传递数据,那这个时候是,那这个时候那这种跳转是求转化,所以我们这个地方出来个请求转化,转过之后,这个GP接触到转过的请求,他的职责就是从最后一种把数据取出来,显示出来。那说这个说从作用域中来获取数据啊,获取数据怎么获取E表达式啊,在页面当中从作用中获取页表示,然后获取到之后渲染页面显示就行,其实页表示就具有渲染的功能啊,如果是接这么list的还需要什么借助GSTL便利,然后呢,大家把这个地方往后反回下。然后呢,这个地方来一个它这个这个响应,那根据我们刚才的分析,这个响应信息就是个网页啊,为什么网页我们说前面发的选求浏览器发的响应信息给的浏览器,浏览器能解释出去就是网页啊,从技术角度来讲,这个响信息是JSP运行的结果,返回到那GSP运行结果就这个网页。
24:11
然后把这网页返回到前台,到哪儿了,谁发的请求到哪,谁发的,同步型浏览器发的,那给浏览器了,浏览器最擅长的事就是显示网页吧,就浏览器怎么显示,在指定的窗口,哪一个窗口工作区懂吧中来显示,然后呢叫线索的明细页面,这样的话,整个这个流程就写完了,就设计好了,知道吗?所以这些流程大家要反复的做的,直到做熟来以后,也基本上就是这么做的,就是换一个表不一样,有的时候可能别的要访问的表可能更多一些,咱们一开始访问两张表,现在三张表了,以后有可能四张表,五张表甚至更多表,知道吧。它就是表不一样,业务不一样了嘛,好,这时候我们整个这个流程我们就涉及到这了,下边呢,我们这个流程设计好了,下边就编码实现了,编码就比较好办了,数据库大家很明确了,流程又很明确了,剩下的就是写代码了,这才是我们最擅长的时什么下边我们来写这个代码了,那写这个代码我们说还是涨,从底层开始写。
25:21
先写map,一个map一个map写,先写这个map吧,在线索的map里边加一个方法,根据ID去查询线索的明细信息,那么所以下边我们来写这个,然后呢,来这个写这个在线索的map里边加一个方法,那这些方法都设计好了,方法值实体类对象明吧,方法名来一个叫select,可录for.yid,然后呢,在这边传一个参数,这个参数就是我们这个线索的ID,知道这都是设计好的,都是根据需求设计好的,应该做。然后呢,这个地方写个注释,根据ID来查询线索的明细信息,知道吗?
26:09
好,这样的话呢,我们这个方法定好了,方法定好在那么映射文件里边加一个搜数句,嗯,加个搜索句。查询到所有句,来一个再来一个来,然后呢,ID要和方名一样,ID要和方一样,CTRLC把它拷贝过来,然后呢,这个地方讲过了,参数帕尔米ter t。反生一个态,那根据ID查自块类型,嗯,结果result map,因为我们访问的是实体类对象,所以这个地方访拯就达map,那达map,那我们找一个达map,然后呢,找一个你看我们这个达map拷过来一个,看哪个地方有个达map,然后呢,再上面再往上找这个。把它拿过来就行,然后呢,这个地方拿过来。
27:01
然后在这把先锋搜行了。那就写呗,查询的时候就那然后呢,From从哪个标准查,查询线索的明细,那从线索中查。那查询他的哪些字段,根据我们以前的经验,查询明细信息,那就是最详细的信息,那就把这个线索标准所有字段都查出来,而且这里边相关联的字段,那些外键一定要连接查询,查相应的名字,因为要给用户看嘛,所以这个时候不可避免,不行连接查询,那连接查询的起别名来给他那查那些字段吧,把这个表格那些字段挨着一个一个查出来就行了。相关字段连接上查名字,那它的哪些字段你不用看别的,就看表就行了,这表有哪些字段,一个一个的别落下了,落下一个都是空的,将来显示的。然后呢,选中这个之后,设计表在这边去写了一个一个来吧,这是ID,那直接查就行了,这种来c.ID那看还有哪S道看见了。
28:07
For name,对,这是姓名知道吧,这是那个姓名,然后呢,这个地方来个叫c.for name,这都不是外价,直接查就行了,看还有什么呢?对这个称呼,称呼创建的时候是不是下拉列表数据啊,只要是下拉这表数据,它都是一个外键,选中谁把谁的ID保存到线索表准,但是它是外键,但是我们查的时候查这个称呼的名字。哪个是数据代码存着,是不是在数据字典值那个表格存着,对要连接数据字典值那个表,去查询称呼对应的那个数据字典值那个表格那个名字知道吗?就是Y有那个字段,就这意思,那去连接数据字点值那个表知道吗?连接数据字点值那个表,通过线路表去连它,那现在我问你了大哥,是内连接还是外连接?
29:00
对,那你看这个外键可不为空,是不是这样的,如果外键不可为空,内连接外连接查询结果是不是一样的,优先用内连接,否则外键如果为空,哪怕这个字段是空的,我也要查出来,只要符合条件,这个时候用Y连接。那有可能,那就看这个字段可不可空,有人说老师这个地方可以为空,但你别看这个,他这个我们说了,他说他买这个项目呢,他这个项目经理应该是个应该是个新手,一个新项目经理知道吧,他设计这些表情上这些字段有的时候不太合理,对太大了不太不太合理啊,你说。然后所以大家你不用看它这个,那你看哪一个。看需求,需求在哪,在这个地方知道项目原型,都给客户确认好的,看看创建线索的时候,这个字段,这个下拉列表可不可以空。对,可以为空,那就说明这个外件是不是也也可能是空的,对,也可能说也可能是空的,即使是空的,我只要符合我的产品条件,这一条线的我也要查出来,这个时候用内连接还是外连接,对外连接我们的主表在左边,左外连接left,就连接数学字点值那个表来一个table,来第一个是value,起个别名D1连那条键啊这样吧。
30:17
啊,那连接条件来个C点这个称呼,这字段等于D为一啊D为1.id对这个字段,这样我就连上数据字典值这个表,连接上之后我就可以用它这个字段了,我这里边用它的字段,我就查询它那个字段了,查询哪查询数据资源值的名字,对DV一点VALUE6嗯,查出来之后大看把它放到一个达对应那个属性里边去,放到哪一个属性里边起别名,起别名以哪个字段的名义查出来。义,对还是这个对还是这个字段,就是以这个字段的名义查知道这是我们按这好这个字段我们就查出来了,下边继续来这个O,这是不是也是个外键呀,也是外键,为什么你看你创建的时候,这也是下拉这外键,那外键的话这个地方是吧,我要查询所有者的名字,那要连接用户那个表格。
31:18
因为所有人是用户的群体,那连接用户那个表内连接外连接对内连接,为什么内连接所有者不会为公,你怎么知道能看到这个地方了吗?对带星的内连接,内连接直接连了,然后呢,这个地方来个U这个边UE连接条线啊c.o的这个字段等于Ue.ID来一个这个地方,那我就可以直接查用户的名字了,ue.name。然后呢,空格as放到O端态,这样这样的话我们就可以了,下面继续来camera的公司,这不是外键直接抄进了啊,那你说你怎么知道它不是外建,对还是这个地方是吧,看需求这给自己输的,它不是下拉列表,下拉列表选的一般都是外键。
32:10
这因为下拉列表里边数据在别的表里边存着,这说啊这种下边继续来,大家看,再往下找职位叫补,这也是一个直接,不是外键直接长,然后呢继续往下边转,还有大哥email,这也不是外键直接乘C点直接,然后呢继续来,然后呢后跑。然后C点好啊,当然以前有同学问说,老师这个查询字段是不是C点也是它呢。就查询字段的时候。有的同学说老师到这里边什么,到这个伟大麦克里边去找,找谁找C点缝这个什么,这个这个列列名的时候找不着,你说就C点缝,那不这个地方,他有的同学说老师不应该叫c.com吗。
33:03
就查询字段是不是把那个都会把前面那个什么表名,那个起的那个别名是不是自动去掉了,对他会自动去掉啊,不用担心,这以前有同学问这个地啊啊,我们知道他知道它就行了,查询字段前面这个C点都会去掉,后边这才真正的叫查询字段,然后包括起编程的时候,它才是真正弹性字段,前面这些都不是是吧。这是我们这样的真正的查询字段是后边那些,然后呢还继续来带是还有这个网站,这段方继续来C点网站,然后呢继续来,嗯,然后呢这个地方来一个M缝,手机号c.M缝,然后呢继续来往下找,然后呢这个是state,这个是什么线索的状态,这也是个外接,也是在这个地方选的,也是连接数据字典值能状,内连接和外连接,看到对外连接它也可以给空,所以外连接来一个left走,然后呢还是连接数据量值能表,然后呢这个是然后呢外DV2连理条件啊叫c.C点叫等于叫DV2.id,这个地方呢DV2点Y6STE字段。
34:27
So,这也是个外键,引用数据四点值那个表它也可以为空,连接条件也是,连接的时候也是外界left交,然后呢,来个这个来,然后呢V3连接条件啊c.S等于DV3.id。DV3.valuei这好,下边我们继续来看看别的子道source下边create y这也是个外键,引用用户表的主键,下边也要连接成那由于create by不可为空内链接,对我这个地方直接写了交换用户这个表,然后呢,U叫U2这个点连接条件啊叫c.Y等于U2.id,然后呢,我们这个地方来个U2点内S下边继续看别的time。
35:22
这个不是外键直接插,然后呢C点可以态下边继续了看,还有什么I by,这也是个外键引用用户表的主件,所以要连接用户表哈,它有可能为空为空,修改者为空,只要符合查询条件我也要查出来,所以这个是无外连接left就然后呢用户这个表UU3这个表连接条件啊,这个地方来点c.IY等于U三角ID这个地方查询角U三角name,然后呢as挨反,然后呢继续看,还有别的忘下边挨着的碳描述,那这么不是外键直接查。
36:05
然后呢,继续来,还有描述这个地方继续来,C点不是外键直接查,还有这个地方来联系纪要,这个地方直接查,C点联系纪要直接查,然后呢,下边还有下次联系时间,然后呢直接查叫C点下次联系时间,还有一个那个地址,然后直接查就行了,C点地址,这就这样的话,我们就把线索这个表格所有字段都查出来了,而且相关的字段查的名字知道吧,他就是查的表比较多一些。为什么?因为这个表格字段是最多知道吧,所以我们这个地方就牵扯到表多,他不管牵扯到多少张表,你只要掌多少,咱们前面给大家讲那种那种规则。他不敢给少张表,我们都不怕他哪怕十几张表,我就这么连接查询,就一直连就行了,这是我们这样好,这样的话大用这个该查的字段都查出来了,下边查品条件Y根据什么去查对idc.id等于长过来一个ID对,这样的话我们这个sol语句就行了。
37:11
根据ID查询线索的明细信息。那大家那句写完这个map层就写完了,Map层写完了,下边写service层,在线索的service里边加一个方法,这个方法根据ID查询线索的名细信息范回值,实体类,这都是设计好的,然后呢方法名也都设计好的,Que叫可录for detail detail然呢BY,然后呢ID,然后呢在这我看到参数是叫ID。方法定好了,在实现类里边也得加这个方法。然后呢,这个地方加一份这个of in色知啊,那这样的话大我们说service方法的实验,调map直接调过来,调哪一个方法,咱们刚刚写那个方法来select叫clue for by ID把这个ID传过来,这样的话,这个service层也写完了,那service层写完了,这一对map service都写了。
38:16
这是查询基本信息的micro service,下面我们来看看查询线索备注的micro service。那我们要操作线索备注那个表吧,那个表以前从来没操作过,那那首先要生成它的micro对应的三部分代码。线索备注的实体类map接口和映射文件,那通过买巴子逆向工程来生成,所以我们来改一改,买巴子逆向工程来改一改,然后呢,这个地方呢改一改就行,但这个这个不用改了,这个配置文件不用改了,我们的数据库只要没变都不用改了,那看看这包名需要改吗?对,不用改了,都是work问题,这些都不用改,只需要打开那个表名就行了,那打开那个表名,我们首先把以前的表注释掉。
39:05
线索的注册。现在我们要打开的线索备注表,就是这个表,把它打开就行了,那把它打开我们这个地方来打开一个这个。然后呢,把它打开就行,这样。啊,知道吧,行了,大家把它打开,表面也没动,直接保持原来的就行了,然后呢,下边呢,我们直接运行买八的逆向工程,它就给我生成了,然后呢,直接运行就行了。好,大家看,那这样的话再看线索备注,这个表对应的三代map,从三代码都生成了实体类线索备注的实体类好吧。然后呢,在线索备注的micro接口,线索备注的映射文件,然后呢,大家看在线索备注的micro接口里边加一个方法啊,这个方法咱已经设计好了,是根据线索的ID查询该线索呀所有备注的明细信息,所以我就直接写了范围值,意思啊,因为一个线索呀可以有多个备注,然后呢,这里边是一个一个的线索备注的是是类对象,知道吧。
40:27
然后呢,它执行的serve select的语句叫select,叫可录mark,然后呢for,然后呢BY可录ID,然后呢在这边传了一个参数,这个参数就是可录ID。然后呢,该引睛累引进了这样的,然后呢,这个地方给他一个注释。这个注释就是根据可录ID来查询该线索下所有的备注知道。
41:03
好,那我们这个方法定义好了,下边来写so入句了,在映射文件里边加一个搜入句,那加过来呗,这个地方来加过一个入句,我们在最下边来写好,然后呢,这个地方来一个查询的搜数据select,然呢这个方来一个IDID要和方法名一样,ID和这个方法名拷贝,然后呢,放到我们这里边参数帕米看啊,根据CID去查刻录,ID是个字符串,字符串类型吗?访回值result map,因为我们将来返回的数据是个list list里边单条记录的数据类型,那都是一个实体类对象,所以这个地方放一个伟大的map,那所以我们这个地方拷过来一个伟大map,就是把我们这个伟大map拷过来,然后呢,放到我们这来就行了。正然后在这里边写我们搜索运行,那写我们搜据那查询的搜索据写来说从哪个标准查查询线索备注,那肯定从线索备注这个标准上查询哪些字段,根据我们以前查看市场活动明细的这种经验的话,在明细页面展示线索备注,应该把备注表里边,那就那些表里边几乎所有资源都查出来,除了有一个例外知道吗?哪一个呢?是不是那个外建呀,外建以前是市长活动ID,那个外建不查别的组长都查出来知道吗?
42:37
那现在是线索,那肯定线索表里边也有个外键,叫可录外地,所以你这些备注是属于哪个线索的,除了外键之外,别的字段都查出来,而且相关联的字段,像什么备注的创建者,创建那种修改者之类的,这些都得连接查询,查名字知道吗?所以跟我们以前那个市场波动明细其实类似,所以现在我就什么就查询线索备注表里边所有字段都查出来,除了那个外键之外,那个外键我们作为查询条件是查询这个线索下所有的备注,所以我就直接写这个特入局了,来写吧,这个地方来我在这边写了,查询里边所有字段,除了那外键之外,别的字段,相关字段查名字,查名字不可避免会进行连接,查询这个地方起个别名。
43:25
好,在这里边写我们的字段名就行了,哪行它有哪些字段,那你看看这个表有哪些字段,线索备注那个表就这个表,线索备注就这个表,选中之后点设计,点设计表,诶这计表在这地方,你点拉来看这个表里边这些字段都查出来,相关人员查ID,除了这个不查。它作为查询条件就行了,所以呢就查外,从上到下一个一个挨着查,别落下了,首先ID查外CR.id然后呢继来还有备注的内容,C点备注的内容,然后呢继续来可谓的Y,这是个外键创建者外键引用用户表的主件,这个地方要我要查询创建者的名字连接查询,那由于它不给为空内连接就行了,所以内连接连接用户里角叫呢叫U所得U一起个边名连接特价啊CR点可Y等于Ue.ID这个地方去查询UE点内放哪个字段里边S。
44:38
所以这是我们说到这,下边呢,我们继续来写这个可谓type,不是外键直接成CR点,可谓然后呢再I派,这也是外键引用用户表的主件,但是由于这个外键可能为空,即使它为空,只要符合我的查询条件,我也要把这些线索查出来,所以这个时么外连接主表在左边,左外连接left叫然后呢用户这个表U2这个表连接条件啊叫CR.sy等于U2.id这个这个地方去查询,u2.nameisasy放到这个字段里边知道。
45:21
好,下边我们继续来看,往下边看,下边还有呢I time,这不是外键,直接查。CR点艾啊,还有谁看看艾的lor点艾的啊,这样的话我们就把线索的备注啊,线索备注这个表格边我们所需要那些字段都查出来了,相关的查到名字下边查询条件我们说了,你这是查询所有的备注,我要查询哪一个线索下的备注,根据线索的ID去查,就这个外件,根据这个外键去查,根据他去查线索ID等于哪一个你传过来那个线索的ID,根据线索ID查询该线索下所有备注的名细信息。
46:12
这样的话,这个瘦鱼我们就行了。其实在这个给我们查看市场活动备注那个很类似,你看很类似,大家到时候可以对照一下啊,就这一点不一样啊。以前是市场活动的ID,那么查询那个市场活动下的备注,现在我要查询这个线索下的备注,就跟这个线索ID去了。好,这时候我们要说的这个sorry已经写完,这个SORRY1写完这个脉写,这个脉写完了,那就写到sorry,在线索备注的sorry加一方法。这个方法我们这地方来一个。这个方也是根据线索ID查询该线索的所有备注,那线索备注的service以前没写过,没写过在这边加一个来线索备注的service,这都是设计的,我们说我们项目以后有几百个类的,这些类都不是无缘无故的写的,就一个项目稍微上一点规模都几百个类。
47:12
所以这都不是无无缘无故的写的,这都是推动我们写的,按照规则推动写的,所以下边我写一个叫可录mark service。然后呢,这是一个接口,面向接口编,然后呢在这边定一个方法,这个方法都已经设计好了,List list指包叫clue remark是频类对效,这个地方它一个query query叫clu remark for给贴BYC录ID,然后呢在这边成了一个来可录ID。好,然后呢,这个地方来一个它,然后该引进类引进来,知道方法定义好了,下边加一个实间类ipl里边加一个实现类,这个实现类叫C录mark service I'm PL在这个类它实现了我们这个接口,这个接口叫可录remark service,然后呢,大家它这个service的类,那给它加一个注解叫service注解,这里边给它的B在容器里边的B起个名字,我们就叫线索备注的特素。
48:25
好,这样的话我就可以了,当然我们说这个service所在的包已经被扫描过了,所以不用管了,在这边直接写我们的类就行了。那service层这个类它实现了这个接口,它把这接口里边所有的方法都得实现是吧?那service层方法的实验调map中,所以我这个地方注的一个map,这个map来一个可叫mark map,然后呢,这个地方来一个来一个它。然后呢,这个地方cmark是吧,然后呢,这个地方来个all to work,然后呢,直接调我们这个mark,调它来select,刚刚写这个方法,Mark for by ID,把这ID。
49:16
这样的话,这个service层也小。
我来说两句