00:00
然后呢,写这个CTRLCTRLL返回值是什么类型的,对返回阶OB类型的方法名,我就用它了,然后呢,这个地方来了它,那给它分配一个ul叫request的map屏,那这个URL大看以斜杠开头,然后呢,大家看这个URL咱们刚才已经用了,我就直接把它拷过去了。因为我这个地方也不按照那个流程来设计的,写了就从顶层往底层写了,这样就行了,这是我们说了,这样完了之后呢,大看这样给它分为UR,分完了之后它要分为杰森加一个瑞斯王斯堡,知道吧,然后在这里边大家看前面有参数吗?暂时没有,没有的话,这个地方不用进行行的了,是不是这样的,让你去了,那在这里边干什么?对,查询所有的客户的名字。然后呢,查询到之后以list的形式返回,然后以return是不是转成我们所需要的接点头罩了,这样这样就反馈,那这个时候要查询所有的客户,客户名字以list的形式,多个客户名字以list形式往回返就行了,那他掉service了。
01:11
那调service这个地方来注任一个service,那查客户的这个时候是不是注入客户的service,注入客户的service private来一个叫customer service,你查询客户的名字吗?然后呢,这个地方来注入叫all work是吧。好,这是说,但这个客户存在方向呢,客户的service有吗?没有没有是不是得创建它了,得创建你看大哥,这就是我们没按照没设,没按照设计流程来,你从顶层往底层写,写着写着。依赖的代码是不是没有,没有你得自己去写了。自己写这个代码先停在这干什么,提供service啊,那提供service提供吧,这个地方来提供一个service,叫客户的service,来提供一客户的service,它是个接口,知道吧,然后呢,在这边定一个方法,这个方法叫查询所有的客户名字,所以这个地方它一个public,就这接口里边直接是public纺织是什么类型的。
02:17
对,查询所有客户的名字,每一个客户名字是个字符串,多个客户的名字是不是放在绿色里边了,来一个字B这样的情况,然后呢,在这个地方呢,直接写那个方法名就行了,方法名建名之意叫查询所有的客户名字叫all,叫customer,然后呢name这样就行了,然后呢,这个地方来一个这样就行了,然后呢这个方法大家看们说这个方法我们说定义好了,定义好之后给来一个时间类,这个地方来一个时间类,这个时间类来一个叫customer service,然后呢I'm PL,这是时间,然后呢,这个时间类它有时间的接口,叫customer service,面向接口编程,它是service类,加一个service注解,然后呢给它并起个名字,然后呢,把这个地方来拿过来,并起个名字叫customer service,他实验上这个接口,要实验这个接口里边定义所有的双法。
03:17
Out insert,然后呢,这个地方它调了这个方法知道吧,那调这个方法所有一层方法的实间是不是得调map,那调map这个地方得住愿一个map住意谁的map对customer map叫customer,然后呢,Map,然后呢这个地方来个customer map,然后呢,这个地方来一个叫all work。那调这个它的一个方法,那吊它的方法,调哪一个方法。查询所有客户名字的那方法,这个方法有没有,没有没有来写这个map,看吧,这些代码你写着写着这思路就乱了,就断了,你看吧,断了再写这个,因为被依赖代码你没写。
04:00
你没写,你这么停下来去写别的,你要写了这个地方就报错了,一直往下写就报错了,所以这个地方在客户的map里边加一个方法。这个方法叫查询是吧,在叫这个方法叫查询所有客户的名字知所以我们前面一直给大家强调是从底层开始起,就是这个意思,然后呢,在这里边返回值查询所有的客户名字,字符串类型的,然后呢,这个地方来个select or叫customer,然档内这样就行了,然后呢,这个地方来写个注释,这个注释来叫查询所有客户名称知道吧,这样就行了。然后这方法定义好了,写搜索句就行了,在这边写到搜索句,查询的搜索句写select ID要和方法名就行,CTRLC拷贝过来,然后呢,把它写到这参数没有p type可以不用写结果result。Map还是ta对type查询所有客户名称,是不是每一个客户名都是个字符串啊,对,这个是个字符串,就比如map了,因为我们返回的不是实体类对象。
05:11
在这里边写错入就行了,查询的错数句写来个,然后呢,Pro从哪个表里边抄,客户表里边抄查询哪个字段对内幕这个字段知这是所有的客户名字都查出来了,就这个sorry就写完了,知道吧,写完之后这个map层就写完了,Map层写完了,回过头了再写这个sorry。啊,那写这service,那调这个B法,调它哪一个方法对,就select好卡了没知,查它之后把它直接往回返就行了,知道这样的话,这个service就行了,Service行了,回过头来再写这个controller知。那写这ctl的这个什么,这个就有了,有了之后直接调这service就行了,那调service这个地方来调用service号来查询所有客户名称,那就调这个方法,调哪一个方法叫query or customer的内容,知道吧,然后呢,这个地方得到一个list的,List里边是一个一个的客户的名称。
06:22
然后呢,这个地方来一个套,然后呢,这个地方来一个随便来了,这个地方叫叫什么叫customer name list这样就行了。查询到之后,大家是不是要把这个list往回返了,就根据查询结果,然后呢,返回响应信息,那返回相应信息,大纲是不是直接把这个list就返回了,对直接return了这个list返回list list转成阶段都,这是不是就是数组,那Li每一个元素是不是都有一个字符串,所以这个数组里边也是一个公司的名字,这都是字符串,那么。
07:03
有多少,查出来多少个,有多少个,就是个结算走法,把它返回到哪了,返回到这个地方来了。我们刚才写的测试页面,那样呢,就放到这里了。他一拿到这么一个阶段轴这一调,这个函数复制给他了,从而实现自动行了,这样的话,这个动态的数据源我们就行了啊。这是我们说自动补全的这个插件,就是动态数据,所以这是我们说的,这是好下边大伙盘继续,那么那这样的话,大伙盘这个地方下边继续来启动我们的服务来测一测这种动态数据网络就可以了,好下边来启动服务来测一测。
08:01
然后呢,这个地方来,我们来继续来访问我们这个这个测试页面,那是第二个测试页面看看。好,那这是动态数据,那动态数来一个输入一个,你说动力节点,再看你说动力节点啊。咱们咱们那个公司里边有这个有有动力节点吗?啊,这个在这什么,是不是签个CTRL,得先登录一下,不登录他访问的CTRL是不是被拦截了,大家明白这个意思吧,对,得登录一下,登录一下,登录一下吧,张三,然后呢,这个地方来个YF,要不然你到后台查数据源查不出来,这个地方再输入一啊,这就查出来了,咱们那个客户表里边就有个动力节点,你点它补全了。所以这种动脉数据源来看就这样,这就给我们用法基本上一样。这是动态的数据。哦。
09:00
但是这个地方还有点问题是吧,有什么问题,大家是这样,你这个到后台查询所有的客户的名字。万一你那客户那个表里边儿,假如有很多公司咋办?对,是不是把所有的公司每次键盘弹起都执行这个函数,把所有公司的名字都返回,那么万一有几百个公司或者几千个公司,是不是这个字符串非常大的非常大,都是从后台返回到前台,每次键盘单机都去查,然后都返回这么一个字符串,这样对用户的网速要求高,效率太低了。知道吗?每次都把所有公司的名字显示出来,那么返回到前台,虽然能实现自动补权,但是效率太低了,知道吗?但是你知道,当然你再什么,你再分析一下需不需要把所有客户的名字,每次都反问。不用了吧,不用。你不管返回多少,只要到前台了,只要富人给烧死了,这个插件是不是都是根据关键字,然后到这里边儿去模糊匹配去,能匹配上的才显示到列表下边,匹配不上呢?
10:13
是不是你返回它也不显示也没啥用啊,所以大家我们就这样,我们能不能这样在后台查的时候,别查所有的客户了干什么,对,就是根据他输入这个关键字。查的时候就模糊匹配,模糊查询。只要名字里边含有关键字的,只有这些公司的名字才什么查询出来,返回名字里边压根就没有关键字的那些,查的时候都不成了。那这样的话,只要返回到前台这个data塔里边是不是都已经有关键字了,有关系他再匹配,那都匹配上,那就都匹配上了,那这样的话,我从后台往前台反馈的数据就少了,就这个意思,大家明白这意思吧,这样所以我们当时的话,在这个地方查的时候,在这个地方在我们这个CTRL里边查的时候,我就给它模糊匹配一下。
11:05
就查这个客户,哪个地方客户。是客户的,在这个地方查的时候就匹配一下,查的时候匹配就不查所有的客户的名字,这个地方就根据他这个关键字去匹配一下。然后我就说那关键字去匹配,这个地方要根据关键字匹配,是不是他得拿到关键字,拿到关键字他从哪呢?对传过来,对他得从CTRL这个怎方拿,那CTRL时候拿,CTRL怎么拿,是不是从前台去传啊,调它时候传,那前台调它的时候去传啊,大家看这个地方去传,也就是说调它的时候就应该去传阅关键字,那那个关键字我怎么能知道那关键字是多少。对,是不是取这个容器里边这个值就行了,对,取容器里边值就行了,怎么取拿到,通过解块ID选择器选中它拿到点BL是不是就拿到了,拿到这样行。
12:00
直接什么在这个地方么?每次键盘弹起在这个地方来获取一下这个值就行,获取它的值,那如何获取,就这么获取,然后呢,这个地方来个Dollar符号,拿到角对象获取它的值VL,这样就行,然后呢,把这个卡内对应变量保存了,叫customer内容获取到它,获取到之后把它提交过去就行了,怎么提交客户名字,这样就行了。这样就提交过去了,每次加班上你获取那个他输入的关键字的值,提交后台就行,后台接入的话传给service,传给ma就可以了。这样可以是吧,这样可以,当然这个地方带一个单带一个这个逗号啊,这样可以,但是这样的话,他知道你肯定是吧,他做这个插件那些人他就知道了,你肯定得需要那个关键字,查的时候就模糊匹配,那怎么了,所以这个地方他压根不需要你,不需要你自己写,不需要你自己获取。
13:13
干什么?每次键盘弹起,它会自动执行这个函数,它执行这个函数的时候,它这个插件已经给我们获取到这个关键字了,放到哪儿了?调这个函数的时候传给他了。这一个就是你那个关键字,把那个关键字,然后呢,它会自动的复制给他,你直接用它就行了,你不用自己获取了干什么,把它直接写到这就行了,这是这个值,所以这个解query大看是这这个参数就是输入的关键字,这个解query就是什么,在容器中,用户在容器中输入的关键字就知道了。这个关键词就是那个就是你获取跟你这个获取的那个值是一样,只不过是他框架获取好了,每次价格你获取好了之后,然后调这个函数的时传过来的。
14:09
每次执行这个号,这样我们就可以了,可以完了之后大家这是参数名,这个参数名我在CTRL里边要获取到,它获取到了怎么办?在这定一个行参。定一个行参这个地方来定义行参字,不兆类型的行参的名字要和那个参数名一样,我就知道了。拿到卡之后再看那是不是查的时候,是不是根据它模糊查询。他是不是要传给service号码,传给他就行了,那传过来就行了,直接传给他就行了。那传过来这个参数,这个方法名,你就别qua o了,那quary什么内容BY什么。By name就根据名称模糊查询客户的名称,知道吗?所以这那那你这你既然这么写了,是不是这个方法你得改造一下了,改造里边加一个方法,然后方法名也也也也改一下,改哪改service从看吗?这能把它改了,改了之后这个地方加一个参数,对叫他是吧,这个地方就叫name吧,对这叫name,同样他的时间内是不是也得改一下,也得改一下。
15:20
然后呢,这个地方大哥,那这个地方带一个参数,这个参数是个内对,他改了是不是下边查询的这个也得改啊,把参数传给他,传给他这个地方也得什么方号名最好也给他改一下,叫by name,他改了这个map是不是也得改啊,Map改找到map这个地方改一下,这个地方也得定一个参数,这个参数是个内,知道吧,他改了搜手域是不是也得改啊,也得改,改了之后呢,这个地方来个带个参数叫parater type,根据名字长字符串。后边带一个什么查询参数啊,查询条件呢,Where根据什么,就是name模糊查询like,然后呢,百分号这个地方来获取那个内幕值,然后呢,这个地方来一个百分号知道吧。
16:16
知道吗?这样我们这个地方就改造好了,查的时候就根据名字去查了,模糊匹配了,查出来一定是都是都是什么匹配成功的,到时候他什么他再到前台再匹配一次,再匹配,到时都显示出来了,知道吗?所以这时候我们说说老郑,那牛老师,你这一路改太麻烦了。那你那你一开始写代码之前没设计,没设计就是这个结,就是这个结果吗。是吧,你没设计,你得自己什么写着写着一看,发现以前写的不对,没有一些问题没考虑周到,这个时候改,你看着你省了那个设计的时间,但是真正写代码的时候,你这个耽误的时间更多,知道吧,所以呢,我们要求大家什么写代码之前先设计,就在就在这个地方,你别不设计上来就写代码。
17:06
写的时候当时没考虑清楚,这样行好,这样的话呢,我们这个就改造好了,改造好之后下边我们这个地方来启动服务来测一测就行了。这样的话,他看他的结果给刚才是完全一样的,但是这种效率就够了。查的时候就已经把所有名字里边含有关键字的那些公司的名字已经过滤过了,都已经查有关键字了。别的没有关系字压根就查不出来,就这了,好,这时候我们这样就行了。然后呢,这个地方来个张三啊,然后呢,YF123点进来,然后呢,登录成功,登录成功之后,大家刷一下这个这个测试页面,刷一下它这个地方,大家结果肯定是一样了,动力节点你看吧,然后一选中一个就选了,虽然功能一样,但是我们第二种这种效率更高了。不用每次把客户标准所有的名字都往回返,知道吧,这种效率高。
18:07
好,这样的话,大概我们自动补全的这个插件,我们就给它截到这儿了,这样的话大家这个插件我们研究明白了,下边我们就准备这样了,把这个插件应用到咱们这个CRM项目创建交易这个功能里边了。那要用的话其实就好办了,其实我们后台代码是不是都已经写过了,CL serve么都写完了,我们要做的是干什么,就是在这个创建页面上面,对对这个容器调用工具函数是不是就可以了,这样就行了,得哈,把它页面里边就行了,所以下边我就改造它了,改造它来找这个页面叫C入点JSP,找一找C入点JSP就是这个页面。然后呢,点进了c5.jsp,沃克奔驰小于c5.jsp,把它改造一下行了,改造的话三步走,你要使用自动补全插件,三步走第一步引入开发包,开发包我们已经拷到项目里边了,直接引入开发包就行了。
19:05
那引入开发包,我这个地方直接引入它了,在这个地方引入就行了,那引入的话用个script的标签,Script的对这地方来个type来一个他,然后呢,这个地方SC来一个叫J这。哎,这个怎来个谢快位啊,怎么没有提示了啊啊,这个没有提示啊,按卓有提示吗?没有没有没有我就考了,没有就考了,把它拷贝过来,然后呢,放到咱们这里边明这样就行了,引入开发包,那它基于框架的步骤,所框架以前是不是也引好了,解块瑞也引好了,所以不用管了,知道吧,引入开第一步往上第二步创建容器,这个容器是不是已经有了,就这个框看到吧,就这个框每公已帮我做好了。下边第三步当容器加完之后,对容器调公有函数干什么,就调这个函数,咱们刚才写这个就这个函数。
20:15
就把它调过来就行了,CTRLC拷贝一下。甚至有些地方都不用改是吧,直接把它写到这就行了。当容器加载完,也就说我们当整个页面加载完,调公函数。调的时候,这个容器的名字是不是跟咱们的不太一样,对咱们那你找找美工写的这个容器的名字,这个名字叫啥,你看看这客户名称,客户名称叫啥呢看看。客户名称当是不是这个东西啊,对这个客户名称CTRLC把它拷贝过来就行了,然后呢,把它放到哪呢?放到这个地方,这是这个容器,就我们这个地方客户名称,然后呢,大家看这里边是不是都不需要动,不需要动这个地方需要动啊。
21:03
这会也不用要动,哎,这个这个大这个名字,这个方法名没改没改,对对by name是吧,最好改一下吧,改刚才忘改了,我操,然后呢,这个地方改一下子叫什么by name,但你这个地方改了,这个地方也得改,对这个地方改了,那ctrller是不是也得改啊对CTRL也得改。把它改一下,那这个地方也改,你知道吧,你这没设计好啊对,没设计就是结局就这样是吧,然后呢,这个地方来拿过来拿好来看这些是不是都不需要动啊,都不要动,这些都不需要动,这都不需要动看吧。这样的话,大概我们这个自动补全就完了。好,下边我们来启动服务来测一测就行了,好,然后呢,启动服务来测一测。你只要研究明白了,就把他跟我们的这些功能结合起来就行了。
22:15
好,下边来这个张三,然后这个地方来个Y f123登录,然后呢,这个地方来个交易,然后呢,这个地方来个创建交易,这个地方来找一个来选一个叫做动力节点这个啊这个。嗯,动力节点你看吧,它一样的查出来,查出来之后一点它。这样我们就融主权了,这个功能就不好了。这是我们这种好,还有大家有没有这种情况,假如假如这样,我给百度创建一笔交易。
23:00
这个地方咱没补全啊,对,没有客户标准,压根就没有这个什么,没有这个,没有这个公司咋办?对这个时候就不能补全了,那你只能输公司的全名了,是不是样子,咱们自动补全说明什么,只有那些客户表里表示什么,后台已经有这个数据了,才能给你补全,他没有你只能输入全名了,输入全名那这个东一点保存。那这个地方你把这个全名传到后台保存起来,那保存起来这个公司什么没有,没有将来客户需要那个交易,需要客户的ID怎么办呢?新建一个客户,对新建一个客户,把那客户的名字给到什么,给到这个交易那个字段里边就行了,知道吧。所以这是我们的这种。有没有这种情况?他输入百度的时候,他既然不自动补全,他要如果随便胡乱写一个公司名字呢。一点保存。
24:03
然后呢,你往公客户边里边加,又创建了一个客户,这个客户这个公司万一不存在呢。他随便他什么,我们你不是说业务说了,必须指定以法人的公司买,以法人的名义买吗。必须指定的客户吗?这个客户假如这个公司,他胡乱写一个公司的名字,这个公司名字压根在国家的吗?国家工商局都没,没有这个公司,没注册这个公司。你这不是也不是以法人名义买吗?咋办?有没有这种漏洞,他这种设计。是不是有这种漏洞啊,对这个公司不存在,这不也给你人家不存在,这个公司不也个人私人啥想买的话随便说一个公司不也能买吗。这跟你以前那个需客户的需求不是不一样了,其实大咱们这个地方做,做咱们这种这个企业应用,我们有一个技术咱们没学呢,所以我们没做这个哪一个是说他胡乱输一个公司。
25:07
这个公司如果不存在,我我连什么创建都不给他创建,那你说你怎么知道这个公司存在不存在?对,你得调国家工商局的一些接口。这个接口干什么,把这个公司的名字传给他,他是是人家工商局有些应用部署在服务器上面了,公开的什么URL了,你用加va代码去调它,怎么调它这就远程方法调用,是我们后边互联网技术后边阶段老师才给大家讲,所以下面这些技术大家没学,没学我们就不调它,我们就认为他输入的客户都是合法的,如如果万一不合法,实际实际用的时候应该是这样的,在后台要创建这个客户之前干什么?对调工商局的一个接口,调过来之后,调接口干什么?判断这个公司在国家工商局注册嘛,如果注册了,工商局会给你返回一个消息,告诉你已经是个合法的公司,你就可以创建客户了,如果说没查到返回一个这个公司不存在,这个时候什么创建失败就是。
26:07
大家明白这个意思吧,就这样说,将来种因为在后台你得调工商局的一些接口,那工商局的接口能不能随便调。能不能随便调,按理说像那国家的这种事业,这种这个什么,他这种系统,咱们都是纳税人嘛,他们做的这些系统也是拿着咱的钱去的嘛,去做的系统安卓都是什么,都是公开的,免费的,但是真正调的时候,他们那工商局那接口调的什么,调的时候不方便。所以说一般来讲,我们很少调他们的接口,调什么接口。有些第三方公司有人看到这种商机了,我调他们的,你调我的,你调的时候好调,但是呢,你调我的是吧,不是免费的,你调一次给我几分钱,我我几分钱也太,你这几分钱也也也太便宜了,关键掉的多呀,对你每次键盘弹你都去掉一下,每次键盘弹调一下,调的多了,你就花钱多了,你说这这接口有这接口多吗?多多的是,网上一搜都是。
27:09
网上一搜都是。最典型的一个平台是么?专门调各种各样的接口是吗?类似的接口还有什么,查身份证的,还要查什么呢?啊这个手机的归属地的,还有查什么IP地址所在地的什么之类这些是么?都在国国家什么相应的部门里边什么都有,都有这种这个信息的。都有第三方的公司做这种接口,他们调国家的一些什么一些接口,你调他,你调一次他容易花钱,所以这种再一个这种接口有个平台是哪一个平台,就京东万象啊。京东万象,京东万象看有没有啊,这就这个,大家看到各种各样的这数据看吧,大家看这些看到天气预报的。
28:04
你想你要做一个天气预报的时候,你应该按理说就叫国家气象局的一些接口,你调他的报调干什么,他给你调知道吧,还有什么查IP地址的,查身份证的,查征信的,查什么地图的什么等等这些知道吧,这些东西,那他这个的话看有没有查这种企业的信息的,别的我跟你说看看,先看身份证吧,身份证最典型的。他你要我拿掉一个身份证,我不知道这个人是属于哪个公,是属于哪个地方的人,对你一调,他把那个身份证输入进去之后呢,他会把这个身份证呢,这个人呢是么?这个这个姓名,当然他不给你返回全部姓名,他中间用个姓给你代替,然后呢,他是属于哪个哪个地区的,就这吗实名是吗?就是说你你要掉他这个接口,他说他你看他是多少钱呀啊,我说这这个肯定是瞎写的啊,这个一次不可能掉,不可能收这么多钱,看到吗?这种看吗,两分钱一次看吗?这才是正,这才是正规的,还有什么,你看这个七毛五,这这个这个也挺贵的,这哪一个。
29:11
你看这个低于一分钱的,当然这都是第三方写的,谁便宜那谁卖的多薄利多销嘛,对,你只要他只要写完这个结口,他又没他又没有什么成本了,你掉一次一哪怕一分钱不到一分钱我都赚钱,躺着赚钱吗?知道吗?对,就是躺着你写好你好写好一个部署到服务器上边,谁掉谁花钱知道吧,你看这项知道吗?就这。啊对运营商对你得租一个服务器是吗?对你得租一个,这这你你要不自己不买服务器,租一个云服务器也行吧,就这样,就这个意思,大家要有这种思想,懂吧以后是吧,这些东西都可以直接调,但到底怎么调,但我不给大家讲是吧,应该是应该是在下一个阶段,老师给大家讲远程接口调用啊对这是我们这种啊所以说呢,我们这个地方跟大家讲来说一下,这个地方他不能随便胡乱输一个公司啊,随乱胡乱出一个公司,这个公司不存在,那不也是没有,不不以法人的公司名义也能买了吗?那他不是这他他是吗?应该后来有接口呢,但咱们现在不做这个接口,咱咱现在不会的,到后边老师给大家讲,大家知道了懂吧,好,这样的话,大看我们这个交易创建交易这个页面相关的功能,我们就给他做完了懂。
30:31
那下边儿怎么办呢?这些都补全了,该输的输什么,这些数据都有了一点保存按钮,把这些数据都发到后台,后台接收到之后,封装一个交易的实体的对象,调service掉map,保存到交易表里边就行了。然后保存完之后返回一个保存结果成功了。跳转到交易的主页面失败了,提示信息不跳转就行了,所以这个流程就可以了,那么所以这时候我们说的这样,那这个流程这样吧,这个流程也比较长,我们一会来写这个流程,知道吧,一会写这吧,所以下边大家休息会休息,我们来写这个流程,写完就行了,知道吧,好,下边大家休息会好,那这样的话,咱们这个创建交易页面上的功能我们都做完了,做完之后呢,下边我们就继续往下边做这个流程了,用户点击保存按钮继续来做这个。
31:19
用户点击保存按钮。然后呢,这个地方来个用户点击保存按钮,保存按钮,他一点保存按钮是不是让后台发请求了,对发个保存的请求,那你后台要提供controller,再提供一个control。那这个CTRL来一个还是交易的CTRLCTRL,然后呢,在交易CTRL里边加一个方法,然后呢来接收和处理保存的请求,那我们这个地方来调过来就行了。他一点保存按钮,像这个发了一个请求。
32:00
向他发一个请求,就是发一个保存的请求,大家想一想,这个请求是同步的还是还是异步的,同步还是异步,想一想。成功了,是不是跳转主页面失败了呢?提示不跳转是不是既有全局而又局部创新叫什么?对一步的一步请求,一波请求需要提交什么参数,是不是表单里边所有参数,表单中所有参数,所有弹数知道吗?好,这是我们知道吗?这个地方跟大家特别强调一点,就是这个客户的名字,这是一个客户的名字,这不是客户的ID,但是我们真正保存交易的时候,交易表里边是不是有个字段叫他ID啊,表示这个交易是属于哪个客户的,这个地方你提交的是客户的名字,后台其实需要的一个ID,你知道吧。
33:03
这个地方我们到时候给定看看怎么解决一下,知道么?好,这时候我们知那提交了参数,提交了参数,那这个CTRL接收到之后,三个指责接收请求有参数获取,参数获取参数定义行参就获取到了,然后获取到之后呢,然后呢,这些参数很多,封装一下封装参数,那封装参数封装什么对实体对象还或者是map,那实体对象的话,你看这个参数是不是属于一个实体对象呢。都属于交易对象吗?其实只有这一个。这个实际对象里边叫卡ID,它是什么卡通内容,其实严格来讲它不属于一个实际对象,那怎么办呢?所以我们可以什么,根据我们的原则,它不不是属于一个C对象,可以放到外部,放到外部知道吧。到时候你需要的时候再封装实体对象,知道吧,好这样的话大家伙分装好了,分装好之后下边什么第二个知道处理业务,处理业务干什么,调service,操调service。
34:04
调service,那保存创建的交易,调交易的service叫transaction service,然后呢,在这个service里边加一个方法,Service加一个方法,然后呢叫保存创建的交易。这个方法我就直接写了,叫save,叫create transaction,保存创建的交易,然后把这map传过来吧。然后呢,传过来之后再看,然后呢,在这个service里边他干什么事呢?他要什么,是不是保存交易了,保存交易,那保存交易的时候,大家注意这个客户的名字,客户名字是什么,他说了这个地方看看这个客户存在不存在,如果存在,我们保存交易的时候,是不是需要客户的名字,客户的ID啊,你是不是得根据这个名字到客户表格去查那个ID去查出来之后才能封交易对象保存。那如果是查出没查出来呢?说明什么?对客户不存在?客户不存在是不是要首先往客户标准保存一条记录,保存完了之后客户ID就有了,然后再保存交易,是不是这个意思?而且这些过程都必须在一个service符中,在都在这个service符号。
35:16
所以这个service的方法,他执行的时候干什么,他第一步先根据客户的名字到客户表里边去查那个客户,看存在不存在,是不是这个意思,存在直接用他的ID,不存在先保存一条客户,然后呢再保存交易,所以说他干的第一件事,先根据客户的名字到客户表里边儿去查客户,看能不能查出来。那查的话他就调map,调map,那这个地方调了一个map,所以这个service它的第一件事先调一个客户的map。Map,然后呢,到这个在这个map里边加一个方法,这个方法干什么?根据客户的名字去查询客户去。
36:00
这个service调过来你知道吗?根据客户的名字去查询客户,这个地方来个叫que customer,根据什么去查,对by name,把这个客户的名字是不是传过去了,对他输入的那客户名字,看存在不存在,然后呢,这个地方去执行骚语句去查,去这个地方来一个再执行所有客户语句,然后呢,去查询客户,懂吗?查询完了之后把查询的结果往外返。然后呢,这个地方往回返,大家看那返回值,返回值是什么类型的。你就印印啊,不是一个是。对就查ID是吧,但我这个我要我要如果说把他整个客户名字全,把整个客户全查出来了。是不是一个实体的对象,实体根据名字查。是是根据名字是精确查还是模糊查对,是不是肯定根据精确查呀,名字根据确精确查,我们说客户的名字,公司的名字是不是唯一的,如果能查出来是不是只有一条,所以他一定是个实际对象,把实际对象我会反。
37:09
根据名字精确查询客户,如果能查出来,那么这个存在存在直接把他的ID给交易了,那如果没查出来呢。是不是得他这个空,他这个空是不是得保,先保存一个客户,得把这个客户保存一下,保存客户是不是得调客户的map是吧,再调一个客户的map。是保存客户,封装一个客户的实际对象,让他保存客户,再调customer map,然后呢,在这里边这个map里边加一个方法,这个方法干什么?这个方法不一定掉,只有当客户不存在的时候再掉它。调查叫他哪一个方法,就这个保存创建的客户叫insert,他什么在这的话,肯定是不是传输客户的实际对象,对我们肯定是双装好的实一对象,知道吗?然后他去执行搜索,去保存创建的客户,保存创建的客户客户,然后把保存的结果往外发,那保存的serve回去。
38:14
范围值影响就投入,是不是这样的?当然我们说这个方法不一定掉,不一定掉,只有客户不存在的时候再掉,就这个方法不一定要,只有当客户不存在的时候再调,只能写个注释。这样的话,我们这个地方啊,知道吗?所以说大看当客户存在时,直接用他的ID,当客户不存在,保存一个客户,然后呢,这个时有ID了,这样就可以了,可以完了之后看是不是就可以什么封装交易的对象,调交易的map保存了,对所以说这个地方继续了掉交易的map,那这个地方再来一个交易的map。
39:05
然后呢,这个地方来个交易的码克,然后呢,这个地方来个串三个申码扣,这然后呢,在这里边来调,这个方法叫保存创建的交易。然后呢,这里边来一个分红,来一个insert叫什么交易,然后呢,在里边传一个对象叫交易的对象。然后呢,大按这个地方来,它执行骚语句保存创建的交易,SQL语句来保存创建的交易,然后保存完之后把保存的结果往回发。然后呢,这个地方影响接入调整,这样的话,当然这个service就写完了,这个service首先去看看客户存在吧。存在直接用,不存在新框架框架,然后再用。然后这样的话,大看这些都做完了,都做完了之后,这个service位干什么,是不是往回反了,该保温数据往回返,返回值是什么类型的。
40:11
按理说是不是影响技术条数,我们说大概在这边,是不是他执行收数就有可能不止这一条啊,那影响谁的返回谁的影响结录条数。对,我们要返问营行技术,要根据营行技术条数来判断成功了是吧了,这个由于执行多个小数据是不是不好判断了,所要判断也能,但是只不过太麻烦了,所以一般来讲,这种情况下是能不根据银行进条数来判断成功还是失败了,所以干什么返回,返回一个VO,不根据银行这个投入来判断成功失吧,那你果老师肯出账,拿到之后他怎么知道成功失败了,看没看到报异常,报异常失败了,不报异常就认为成功了,大家明白这意思吧,就这种复杂的业务,一般来讲我们都这么处理。知道吧,然后呢,在CTRL这拿到这个什么,调完service之后,然后呢,这个第二个职责完成了第三个指责,根据处理结果,然后呢,生成相应信息。
41:10
然后把这个响应信息返回到前台。然后呢,这个地方。对,这个返回到这儿来,然后呢,这个是个响应。这个什么来个响应,那这个响应信息是个什么样的信息。对,是个杰森,前面发的异步请求是个杰森,杰森里边包含什么?对,他说了,成功了跳转主页面不需要什么数据,失败了提示你不跳转是不是前台只需要知道成功或者失败了,对,然后呢,如果成功了无所谓了,失败了他就返回是吧?对MY失败的原因,返回这么一个节奏就行。
42:08
然后呢,把它返回就行了,然后返回它,返回它那前台这个的吗?对,拿到之后前台阿贾克斯拿到之后,然后解析杰森选传能,这样的话,这个流程就设计好了。好,流程设现了,下边编码实现了,编码实现先从底层写,那先从底层先写map边先写这个map,在客户的map里边加一个方法,这个方法干什么?根据名称精确查询客户,然后看看这个客户存在不存在,知道吗?所以我们来看啊,那直接写了啊,那写了吧,在客户的map里边加一个方法,客户的map找一下客户的map叫customer map,在这里边加一个方法。根据名称精确查询客户返回值,对实体类对象来一个叫select,然后呢,这个地方叫什么customer by name,然后呢,这里面常用参数,这个参数就是一个name,这是客户的名字,然后呢这个地方来写个注释,这个注释来一个叫根据name叫精确查询客户懂。
43:26
好,这样的话,这个方法就定义好了,方法定义好了,下边写操数句,在映射文件里边加个操数句,然后呢,这个操数句来一个查询的操数句,谁拉ID要和方号名一样,把这个方号名拷贝过来,然后呢,放到我们这里边参数排名叫tap谱,什么类型的,对name是个字符串类型的结果result,对map,因为我们要返回实体的对象的,所以它是个map,然后呢,拷过来一个map这东西来一个。找一个给他卖过这地方对吧,把他找过来吧,这种。
44:04
然后呢把它拿过来,然后呢,这个地方来拿过来,然后呢在这里边写我搜首机行了,那写搜首句查询的搜数句select,然后呢,Form从哪个表里边抄,客户表里边抄,查询他的哪些字段,对所有字段,其实我们这个地方是不是只需要一个ID字段,当然我们为了复用所有字段,所有字段in include把那个so语片段拿过来。然后呢,这个地方挪过来靠背,然后呢,这个地方记住好看这。把它拿过来就行了,这样这样就行了,查询条件我根据什么去查内幕精确查询是不是等号对,然后呢,这个地方就行,这样就行了,好这样的话,这个骚扰一就行了,骚扰一行了,这个map就行了。
45:03
这个map写完了,大家是不是在写这个map,写这个map就行了,写这个map,这个map叫保存创建的客户。诶,这这个方法是不是已经写过了,做线索转换的时候,是不是往客户表里边架构记录,架构注入记录就已经写过了,哪一个方法。保存创建的客户哪一个方法是不是这个保存已经写过了,搜有句肯定也有哪一个就这个啊,所以这个方法已经写过了,所以不用写了,下边保存装线的交易这个方法是不是也写过了?做线索转换的时候,往课后表的加居录是不是也写过了,也写过,所以这2MAP都写过了,这样的话map层三个都写过了,下边写了。写这个什么,在交易的service里边加一个方法,这个方法叫保存创建的交易。所以下边我们来讲,所以我们说封装、继承、多态这三个思想是Java什么面向对象编程的三大特征,所以你为什么叫他他这三个叫三大特征,因为它贯穿在你写代码的是么?各个什么整个整个过程当中,无处不在是么?所以这就是封装的资征,封装好直接复用就行了,好这样时我们可以可以往上下边写这个service,在交易的,在交易的service里面加个方法交易的service交易的时候以前没写过,所以在这我加个service。
46:29
知交易的service来一个叫transaction service,它这个接口面向接口编程,在这的定一个方法,这个方法咱们已经设计好了,范围值对VO方法名来一个叫c create叫什么transaction在这呢提供一个参数,这个参数是不是一个map啊,Map我们书摸好的,然后呢,这里边来个string,来一个all,这个地方来个map,这样然后呢把这个地方该引业类都引进来,这样好这个法service方法这个定义好,定义好之后给他一个时间类,然后呢,在这边创建一个时间类,这个时间类叫交易service I'm PL,这是一个类,然后这个类要不它实现那个接口叫交易service的接口。
47:21
它是service类加一个service的注解,然后呢,给它的B起个名字,我这个地方就叫transaction service。占存了,那么这个类实际上的这个接口,他把这接口里边所有的方法都实现al ins employment method占存了。然后下边我们写这个service方法就行了,那写service的方法写它干什么?我们设计的很明白了,对先什么对调map,客户的map,然后根据名称精确查询客户存在不存在知道吧,所以这个地方来调入map,调客户的map,对这个地方得注意进来一个客户的map private,来一个customer customer,然后呢,Map,然后呢,这个地方来一个叫customer,然后呢,这个猪型叫auto world。
48:13
然后呢,这个地方来调这个方法,来这个地方首先来这,然后呢根据内精确查询客户,然后呢来调查就行了,调他哪一个方法,咱们刚刚写的那个方法,Select customer by name。这name从哪取啊,对,从map中取,那就直接取就行了,那取的话他一定在CTRL中封装好了,对这个name那就什么,这个是叫客户的名字吧,叫customer,我以后放的时候就叫它叫customer name,放的时候就叫,然后呢,这个地方定一个变量,把它保存起来,对这个地方来个叫customer name,这样情况,然后呢把它强装一下,但是客户的名字他肯定是个走串知道吧,然后呢,大家把这个名字传过来,这样就查客户。
49:10
一调它,然后呢,查询到一个客户叫customer customer。对对,这个地方查出来是不是就一定能查出来呢?不一定是不是得判断一下子,判断一下,判断它是不是空的,如果空的说明客户不存在是吧?所以这个地方来判断一下,如果什么,如果客户不存在,不存在走是不是得新建一个客户啊,新建客户,新建客户,那如何判断客户不存在,对A它等不等于no是不是这样的,如果等于no是不是不存在啊,不存在新建客户,新建客户怎么新建。对,这个时候是不是得创建一个客户的实体对象,把客户的那些信息是不是封装里边,封装里边这样就行了,然后呢,这个变量定一个变量指向它哪一个变量对,就是它,它本来是不是指向B,然后让它指向这个客户就行了。
50:10
这样就行,然后呢,当然现在这个客户对象是个空对象里边数据。往里边封装数据从哪取?从map里边取是不是这样的,从map里边取关于客户的信息,只有啥信息啊对,就是一个名称是吧,他肯定有很多字段是不是空的,因为这个地方就是临时创建客户,就是一种快捷创建方式,所以那你来主创建吧,那看看哪些字段set,咱开封装一下听下啊,哪些we有没有没有没有空着,固定电话没有,我这个不能空。对所有者不能空,我们说所有的所有者不能空,所有者是谁啊,对谁创建的是谁是没有明确指定所有者谁创谁创建的,对当前用户从30边取,现在是30层方法,能取到30吗?取不到那怎么办呢?对肯定在CTRL时候取过来user之后是不是放到map里边了?对直接从map里边取就行,map.get啊那取到之后放的时候我就用那个那个什么contains那个那个什么常亮了,所放的时候我就用它,所以让取的时候我就用它U色,等它,然后呢,这个地方来个U色,然后呢,这个地方该引进来,引进来站停了。
51:31
然后呢,来取user.get ID,然后呢,再来看看还有什么,还有什么属性,看看下次联系时间没有name,这个是这个有是吧,这有这客户名字是谁呀?是不是就这个对,就是这个客户的名字。然后呢,再来看看side还有什么IDID什吗?谁要对UIDU压D,然后呢,他干点side还有什么功法描述是不是没有啊,创建时间是不是有啊谁啊系统时间是吧?对,就是当前这个系统时间直接转成字符串就行了,还有谁对创建人这个地方来一个头,然后呢,这个地方来一个比如set叫什么create谁呀,对还是user ID啊customer还有什么S还有什么看看联系纪要没有地址是不是也没有,是不是也没有挨time也没有,没有了,就这些这样的话,这个客户实别对象封装好,封装之后是不是调客户的map一下,把它保存了,客户的map调它,对,然后呢,调它来一个叫insert卡。
52:45
叫他,然后呢,把冯装红这个对象了,知道吧。这样就如果不存在,就新建一个客户知道吧,这是我们就写到这儿,那如果存在呢。存在他一定不得空,这里边就进不来了,进不来那他不能空,那个他是不是有有这个客户的信息了,下边封装交易的对象,保存交易就行了。
53:08
那如果不存在,不存在新建的客户要保存这个对象了,边了也可以直接用它了,是不道吗?对下边我们就这了,下边就保存创建的交易,那要保存创建交易,对是不是得创建交易的对象啊对你有一个section对象,这这样就行了,然后呢,这个地方来定一个变量,来一个叫transaction transaction等于它。然后呢,大家看这个地方继续了,那往里边封装版封装来看看都有哪些信息,Set阶段阶段从哪取,Map里边取都是从客户端传过去的,知道吧,这阶段知道吧,传过去直接从map这取,Map这取我就直接取了啊点get我放的时候阶段我以后就叫它了,对是不是得把它转成字符串啊,转成字符串强转叫转成磁。
54:03
同样还有别的传塞塞,还有什么呢?看看OO是不是也从外部里边取啊对,为什么从外出你看啊,这都是传过去的,一点不存对这传过去从map这边去get,然后呢,这个地方来个我就叫O了啊,这个地方来一个叫O,然后呢,这个地方来一个也是转成字符串。对,还有什么呢,看看。对,还有什么transaction.set还有啥下次联系时间是不是这样的,那也是从map里边取了这种get啊,那这个下次连接我以后放的时候,我就跟这个名字跟这个属性名保持一致就行了,对,我以后封装的时候去就好,然后呢,这个地方来一个号,这样就行了。然后呢,再继续来看,还有什么呢。创塞的声音叫set,名词名称,名称是不是也从map里边取,对也从map里边取,这是机对吗?这是交易的名称,这种也给他强转一下就行是吧,这样还有大看还有什么看看继续拉传30份叫S,还有金额,金额也从外部这边取,Get,那这个金额我也叫他了,对妈就跟这些属性名保持一致,属性名保持一致,属性名是给数据库里边字段保持一致的,是不是这样的,对,这样。
55:30
对这些,然后呢,这个地方点site看还有什么呢?Set还有什么呢?Didd这个地方什么对UID,只要是新创建的对UID,然后呢,还有啊比set还有什么看看对这个是对预计成交日期,他我也直接这么取了啊,以后我往里面放的时候这么就是这么放知道吧,然后呢,这个地方强转下对是这应性。
56:03
然后呢,继续来看,还有什么呢,Trans叫还有什么看还有customer ID说你这个交易属于哪个客户的,把那客户的ID写到这哪一个客户的,对就是上面这个他的IDID知道吧,然后呢,再来一个transation.set还有什么呢,看看所是commit time,这是谁啊对系统时间点来个头,系统时间刚刚创建的嘛,然后呢,这个是trans间叫S,还有create,谁要对user的get ID还有呢,传塞的set,还有什么看看还有连续机要,这个也是从map里边取了,这从都都是从客户端传过来,全部都放到map里边,然后呢,放到这里边,然后呢,这个啊,这是延续机要,然后呢,这个地方来个强转药。
57:03
对,然后呢继续拉,还有什么看看传三个声叫S,还有联系人的ID,联系人ID从哪取啊对,是不是还是从外部这边取啊,就联系人这个地方也是从后台这个可搜索的写了个隐藏域里边的一点保存也发到后台了,所以这个地方也是从map部这边取盖,然后呢,这个地方叫count ID,然后呢,这个地方来强装一下知道吗。I。
我来说两句