00:00
啊啊,我们还是接着做我们这个修改市场活动啊啊,我们说这修改的这种流程,我们说它稍微复杂一点。它相对于创建和删除来讲都比较稍微复杂一点啊,它复杂的话,它就是分两个流程,所以它分两个流程。哪两个,第一个你要修改哪一条记录,你选中它之后,然后呢,一点它打开修改的这个模态窗口,那在这模态窗口上面显示这条记录,原来的一些信息都应该显示出来,知道吗?这是一个流程,那原来信息在数据库里存着,我们先后后台发请求,把这些数据取出来,取出来之后显示到页面上,用户就看到了。知道吗?然后呢,下边还有一个流程,下边一个流程就是用户看到这这个表单之后,他原来信息之后,哪个地方他感觉不对的话,他可以填知道吧,他可以改,改完之后一点更新按钮,想后台发起流更新的,保存更新的这么一个流程,知道吗。
01:02
这是我们说这一个流程啊,它总共是两两个流程,其实大家跟我说修改的话,就是所有的修改基本上都是这样,你要修改哪一条记录,先把这条记录的信息查出来,显示出来,然后呢再修改,知道吧,好,当然我们这个修改市场活动这个流程,我们上次课已经给他做了,前第一个流程做完了,那第一个流程当用户选择一条之后,然后呢,一点修改按钮,弹出修改市场活动的摩擦窗口,在这个摩擦窗口上面来展示这条记录原来的信息。然后展示完了之后,用户就可以填写表单,填完了之后,然后一点更新按钮,第二个流程就开始了,好,下面我们还是接着昨天我们的做,那么我们昨天我们已经做到这个用户能够打开模特窗口,然后并且在模特窗口上面来显示这条记录原来的信息了,所以下边我们继续来做这个,然后呢,继续来在这个流程基础上,我们继续画知道,然后呢,用户这个这是我们这个修改市场活动这个,诶这个地方,昨天这个地方,这个地方有一句话,这个是我们这的,然后呢,弹出知道弹出。
02:11
弹出,然后呢,修改市场活动的模态窗口,把数据查出来之后,都显示到模态窗口上面了,然后把摩擦窗口弹出来,那弹出来之后怎么办?我们继续来画这个图,然后呢,用户就填写表单了,然后呢,下边我们来拉用户填写表单,填写表单。就在模擦窗口上面就填表了嘛,填完之后点更新按钮要保存了,知道在这改,该改的改,该选的选,该填的填,然后呢,一点更新按钮,就又向后台发请求,发一个保存更新的一个请求了,知道吗?然后呢,这个地方来个用户填完了之后,然后呢,用户点击啊用户点击啊更新按钮,更新按钮,他一点更新按钮,大家看发生什么事一点它再看。
03:05
是不是向后台发请求了?对,那为什么要后台?因为数据库在后台存储。啊,所以呢,你要更,你要更新数据库里边的内容,你必须向后台发进去,所以那我们说后台将后台发起,那后台就提供CTRL提供controlrl来接收和处理这个请求。那这个雪牛大看是新创建CTRL这个这个CTRL是新创建这L还是在原地方加方法。对是不是加方法,对加方还是在那么主页面上面来进行的,所以还是个原来controll叫方法,就那我们这还是在原来controller叫艾,然后呢control,然后呢在这上面来加一个双法,嗯。还说那啥。啊,什么。你这个是删除的。啊,这个删除了吗?啊啊,把这个点错了是吧?哦,这个我说那个这句话怎么没有了呢?这句话怎么没有了呢?哦,是不是我还我还看了我没发现这个,没发现这个,那我们这个把这个恢复一下吧,把这些。
04:16
我看了点的好像是是修改的是吧。嗯,这个。然后把它这些都删掉吧,把刚才画了这些都删掉,嗯,然后他这个地方修改了,修改在哪啊在这个地方,嗯啊这句话没掉是吧,没删掉我说这句话怎么没有了呢哈,昨天没保存上呢,是吧,那我们继续来写这个吧,嗯,然后呢这个地方,然后呢用户是吧?用户然后呢,这个是点开模擦窗口之后,那用户填写表单啊填写表单,然后填完之后用户点击更新知吧,然后呢这个地方来个用户点击,然后呢更新按钮,用户点击更新按钮,一点更新按钮向后台发进去了,那向后台发球,后台提供给重了。
05:04
然后呢,这个地方来后得进行平装,那这个瓶装来一个activity activity存出了,然后呢,我们这个地方来一个它,然后呢,这个地方再看我们这个地方向他发一个请求。那发这个请求是个保存更新的请求,保存更新的请求,那大家看这个请求是同步的还是异步的。义对是不是义务了,对,因为他还是不是还是在原来主页面上面来完成的,对没有跳转页面,所以我们这个地方还是个义务请求,然后呢,义务请求,那异务请求需要提交什么参数,对是不是就表单里边那些参数对表单中所有的参数,表单中所有的参数啊参,然后呢,把这些参数都发到后台。然后呢,这个地方来把它发过去,那这个ctrler接收到请求之后,那我们说它的职责,三个职责,第一个接收请求有参数获取参数,这是大家看这都是,这都是规则,这都不重要,它虽然不是语法说你不在重要,包括一些封装参数等等,这些你不在这边做也行啊,但是我们说这我们说这我们根据大家这种这种编程的这个代码的这种组织的这些经验,这些职责在肯做最好的知吧,包括这些封装参数知这封装参数在can做最好,因为你要放到service,放到service边做他就不太好了,知道吗。
06:37
啊,所以说他刚我说这都是大家总结好的,我们给大家讲代码分层原理的时候,我们说这些都是大家经过长期的这种编程经验总结出来知啊到后边大家怎么,包括前面可能有大家也给大家讲过一个叫什么叫Java编程,里边有个叫什么设计模式知。叫设计模式,叫什么设计模式,就代码编程的时候一个设计模式,其实它不是什么语法,就设计模式不是什么语法,它就是么模式,就说你写代码的时候一种模式,这理论上来讲,你只要符合符合语法的要求,只要语法不错,你怎么写都行,但是你这么按照这种模式写,最好叫代码,最好维护,最好扩展,叫最好复用就知道了。
07:25
啊,所以大家你在课下你做的时候,你也要按照这种模式来做,知道吧。就像我们前面给大家讲的设计模式,就你们现在学过设计模式学过哪些了?单利是吧,还有啥的,对消费者模式是吧?啊其实后边还有很多好几十种吗?知道吧,对其实这你说我写代码,我非要非要写成单例的吗?都没必要写成单立的,那我写成单立的有单立的好处啊知道吗?这这这个吗?那有单立什么好处,那整个项目整个系统上就一个对象知道吗?
08:00
我这样写就能保证我一个类在整个系统只有一个对象知道吗?所以这就是模式呢,我不这么,我不按照这种模式写也行啊,但是以这种模式写最好就这个意思,就大家总结出来了。啊,这是让我们知道,那我们这些大纲,我们这些模式也都总结出来了,你最好也要按照这么写啊。你为什么到公司里边,你看公司里边代码基本上也都这么写,对吧,大家都这么写,那你要说我就不这么写,那你给大家写的代码不行,那将来你的代码就维护起来,就不好维护了。拿到公司里边维护的成本就高了啊,光光看你的代码,你的代你写完之后别人会掉吗?别人调的话,你写的跟别人不一样,别人看不懂,看不懂那他过来问你是吗?难怪你不耽误大家的时间吗?就这。所以大家如果是都一样的话是吧,如果都一样,诶这个时候我们说互相配合起来就好了,我哪怕我不认识你,诶我我甚至我跟你,我我都跟你没见过面是吧?你的代码拿过来之后,我一看我能看懂知道吗?这样吗?所以这是我回事,然后到公司里边有个最达到一个什么最高的一个境界,就什么,就一个团队里边几十个程序员,大家写的程序的拿过来之后一看,跟一个人写的一样,这是最好的团队,这是你要说一个人写一个样,一个人写一个样,这个时候这个团队肯定开发不好,对维护一下肯定不好啊,所以这是我们要说的这啊,当然我们现在这个,现在我们这些成员啊,就经过这么多年的发展,你知道差不多了,对吧,大家从一开始学都注重这种模式了,就我们一开始学的时候那种模式不行,就我们那时候。
09:40
学到Java Java功嘛,刚传到中国还没有太长时间呢,所以大家开发的没有什么规范,就我们记得我们刚一刚一开始写代码的时候,这个做项目的时候,我们当时咱们还是咱们做的起步晚,但是我我记得我们给这个,给国外的那些什么,给那个,我们记记得我们原来做过一个项目,给那个什么印度,给印度的一些程序员一块做项目,知就印度这个国家,你别你别看他这个其他方面发展的不如中国,但这个软件这一方面很厉害。
10:13
印度的软件软it行业应该在世界应该是处于领先地位,就印度就说他我们当时的给他们做项目的时候,他们那程序员给咱们的程序员拿过来的时候,敲过来代码一看就不一样那种,人家那些什么拿过来之后特别整齐,看着跟同一跟一个人写的一样,咱们这些成员拿过去了,有的格式都不格式都是很弱。啊,这给人家一看就不是处于一个一个这个水平上的。这是所以说呢,我们这些,那你做的这个项目,这个代码的稳定性啊,健壮性啊,包括这些运行效率啊,包括它的扩展性,复用性,这些都不如人家,所以呢,我们从一开始进入这个行业,一开始做项目,你最好都要按规则写。
11:01
啊,规则你说老师那按规则写,那是不是这个就没有创造性了,就我的创造性是末梢了。他不是这个就不要创造性了,这是团队性的开发是吗?啊,你要是具体解决某一个业务的时候,你可以是按照自己的思路发挥,但是写代码模式上面,格式上面你就别发挥了,知所以这时候我们要说到这,所以当我们这个地方我们继续来到这个,那我说接收到参数之后,参数很多封装参数,封装参数知道吧,这是我们这些,这是CTRL层的职责,那我们说这个CTRL2层呢,我们说这样接收到参数也封装好了,那我们说这个封装的时候,大家这个地方想一下大封装成什么样的一个参数,对对,我们说最常用的就是map或者实体类对象,那这个地方是分装map还是分装实体对象呢?对,那到底分装map部分成实体对象呢?我们这个地方一般有规,有一个规则是吧,什么规则一般是这样,第一个什么你看啊,第一个你看这些什么,第一个你看这。
12:08
写参数,这些参数将来封装起来是干什么的,干什么要传给service,传给map,传给so的,传给S语是用的,这个时候你要看什么呢?你看这到底封装的时候,封装麦风装式体类,看这些参数将来传给S,传给麦,传给SQ语句的时候,它是干什么用的,是查数据的还是写数据的?就是这种封装参数,封装参数到底封装成什么,到底封装什么,看什么看这个,看看这些参数将来封装好之后,传给service,传给Mar,他是干什么用的,就如果,那么如果传他传给sir,传给传给迈,传给sir去,如果是做查询条件来用,是做查询来用的,查询一般都是做什么查询条件,查询条件来用的。
13:03
这个时候优先封装成map,是优先封装成卖封装成map。这是我们说的这还有还有这个,还有这个,然后呢,这个,那如果什么,如果传给service层,传给迈,传给server去,如果是做作为什么写数据来用写数据,写数据什么意思,就说增加删除修改,那如果是在这些色路当中使用优先封装成就封装成,然后呢实体类对象。优先分成实体图行,这是我们知,那你说老师,那么那是不是所有写数据都分成实体就行,所有查的都分装成map,基本上查的都放成map,那写出去是不是都放成实际对象,你还得进一步的来看看什么看,如果这些参数就是本来就属于实一个实际对象,它就是写数据,这个时候生成实际对象,那如果说作为写数据,但是如果这些参数不是属于一个实际对象,可能属于多个世界对象,你想这个时候你想封装一个世界对象,你都封装不了。
14:14
所以这个时候呢,即使写数据也是什么,也是封装成map,知道吗?所以我们说写数据的时候两个条件,一个是这些什么参数是作为写数据来使用的,叫写数据,写数据使用,那这个并且并且这样并且参数之间是么?就本来就是属于一个实体对象,就本来就是属于一个实体类对象,对象,实体类对象,这个时候我们说就封装实体对象,否则的话全部都封装成,全部都封装成map,这是我们这个大家写的时候一个规则,就这。啊,这个是老师说,如果作为查询条件,或者或者这个什么或者或者什么或者参数之间不是属于一个视计流形,就不是属于一个实体类类象。
15:13
对,像这个时候都封装成外部知道吧。这是我们这个原则,但你比如说大概我们这个地方,那我们这个地方大看这些参数表达中这些参数哪些就这些参数是不是属于大,看他们什么将来传统,Sorry,传统是不是写数据的。都写数据,更新数据吧,修改数据,写数据,而且大家这些参数之间是不是属于一个设计对象呢?是对,都是属于市场活动设计对象,所以这个时候我们分装种实际对象,这个地方实体类对象啊,那这个对象就是activity activity对象知道吧。好,这是我们说的这样,然后呢,大家那这样的话,把参数接收到也都分装好了,下边大大家们这个CTRL第一个知道就完成了,第一个知道,第二个知道要这么要处理业务了,处理业务就是处理数据了,那我们这个处理数据就是把这些数据更新到数据库,是这个市场活动这个表里边。
16:11
那我们下边就第二个知道第二个要更新数据了,它不能直接更新control了,它调service,那下边我们调service,那调谁的service,调市场活动的service知道吧,然后呢,我们这个地方来调过来,然后在市场活动的service应该加一个方法,这个方法干什么?就是更新市场活动了,那更新市场活动,那我这个地方这个方法我就直接写了建明这一叫保存修改的市场活动叫save edit activity。I条推腿,然后呢,这里边这是个这是个函数,然后呢,加一个这个小括号,小括号里边是它参数,那这个参数肯定就是加咱们前面分装好多实题的对象,XT的实题对象是吧。好,这是我们说到这个这个service方法,那service方法然后调到service上法之后,那service方法就可以访问数据库,把这一条市场活动然后去更新了,那他不能直接访问数据库,它调map,所以我们这个地方调了一个map,然后呢调map,那调谁的map,那更新市场活动,那肯定叫市场活动的map艾克推推。
17:23
然后呢,这个是map,然后呢,我们这个地方来调过来。然后呢,在这个map里边加一个方法,那这个方法是叫也是保存更新的啊保存更新的市场活动,那这个方法名我就直接写了,保存这个地方来一个叫呃,更新了更新的,那我就update市场活动activity知道吗?然后呢,在这里边我们这个地方来给它,然后呢,在这边传一个参数,这个参数就个实体的就行,知道吗。好,这是我们说的,这当然你有有的有的同学可能会发现了,你看咱们ctl这个map层的方法都是命名的,什么insert什么什么,然后呢,Update什么什么delete什么什么,还有什么select什么什么,这些大家都是对应的circleql语句,将来这个member层要到数据库里边去执行一个SERVE5具,它执行什么SERVE5句,我们命名的时候,这个方法名就以谁开通,这样可读性比较好一些。当然你看我们的service层这个方法,Service方法都是什么?
18:28
叫C5EDIT,然后呢,C5这个什么一叫什么,这个叫C5什么什么,然后呢,或者叫C5EDIT什么c create什么,然后呢,还有什么que什么什么,当然这些都是为什么是C,为什么不是insert了,因为它不直接执行造数句,我们用C,用select等等这些有业务含义的save就是保存了。啊,保存更新那就save edit,保存创建那就save create,查询那就select,所以这些都是有业务含义的,懂吗?它不是直接执行搜语句的,所以这是我们说的这些命名的这些方式知好这样的话,那我们这个方法就设行了,方法设交下边什么这个MY层就可以通过MY8访问数据库来执行搜数据了,所以那我们这MY执行S句执行搜数据,然后呢,我们这个地方来这个时候更新啊叫更新,然后呢,市场活动吗?这是我们这,那大家涉及到这个地方,就能大概能够想象一下这个造数据大概是个什么样造数据。
19:35
那更新的那就update对,所以说我们设计的时候都已经设计好了啊,就这种特数就好,大家他执行完了之后,把执行的结果往外放,那返回值写数据的都是返回影响记录条数。然后把影响记录条数从service继续往外返,返回给C了,嗯,这是啊,这然后呢,这个controller拿到影响记录条数之后,那它的第二步职责就完成了,数据都已经处理好了,处理好之后下边他的第三个职责。
20:06
第三个职则就是根据处理结果,然后生成响应信息,这是他的职责,所以我就直接写了,然后呢根据,然后呢处理结果,然后呢生成响应信息,生成详情,然后把响应信息返回到前台就行了。那返回到钱在哪个地方,谁发的请求发给你发发这个返回给谁,所以这是我们的响应,那我们这个地方谁发的请求,那你看看前面发请求的方式,异步请求,阿贾克斯发的响应信息给到阿贾克斯,那阿贾克斯能解析的数据,这个响应息一定是个阶层,知道吧,你要给他返回网页,阿贾克斯解决不了,所以他一定是个阶层,那这个阶层里边包含什么?那你看前台需要什么,前台需要什么,需求说了算,需求说了,如果成功把它关了,下边刷一下。
21:00
那关了刷的话,直接掉非尔查询函数就行了,所以这个时候它不需要本参数啊,那然后呢,如果失败了,提示信息不关,下边也不刷,所以他要知道一个提示信息,所以总的而言,前台只需要知道你后台更新成功了还是失败了,所以我反问的一个更新成功或失败的一个标准。一成零是吧,知道吗?然后呢,成功了无所谓了,失败它就返回一个失败的原因,然后呢,把这个提示给击返回,然后呢,大家我们把它返回就行了,这样就返回阿贾,返回到阿贾克斯那个回调函数,阿贾克斯回调函数拿到这个什么杰森度串数解析杰森渲染页面,然后呢,渲染页面,那么怎么解析监测渲染面,那就是我们给大家说了,看看扣的是零还是一,如果是一把它关了,下边调一下分页查询的函数就行。然后如果是什么零,那提示一下这个不关,下边也不用掉了,所以这是我们这个流程就可以了,这是我们这个修改的第二个流程。
22:06
好,这个流程。
我来说两句