00:00
这个关联市场活动啊,我点一下这个超链接,弹出来一个模态窗口,这个模态窗口呢,我可以啊通过这个啊搜索框输入关键字,通过这个关键字来搜索这个市场活动,这个市场活动搜完之后呢,我通过复选框挑勾的形式啊,来点击这个关联按钮。能理解啥意思不?也就是说刚才我们这个解除关联是在我们关联关系表中删除记录的这么一个操作,对不对,那现在我挑勾点关联就是做什么操作,哎,在关联关系表中添加记录的这么个流程是这样吗?好,那么现在我们首先来第一步啊,第一步是要先搜索,然后再干嘛呢?再关联,是这样吗?先搜索它啊,那这个搜索大家注意看啊,首先我得定位到这个文本框吧,对不对,我得搜索,但是大家注意看啊,我这个搜索啊,我点哪个按钮搜呢,没有提供按钮,当然你也可以自己加一个。
01:10
OK吧,老师,这个放大镜能不能点,这个放大镜就是一个摆设啊,就比较好看而已,他点不了。OK吧,好,你可以自己填一个按钮啊,但是这块添个按钮啊,这个比较啰嗦啊,就显得这个画蛇添足呢,所以说啊,当时客户也提出的需求是什么呢?敲什么敲回车啊,每次输完之后敲个回车,然后搜索出来咱们这个市场活动的这个列表,OK吧,这个搜索啊,是我们今天的啊,呃,比较复杂的一个点啊,好,我们来看看怎么个搜索方式啊,所以说首先呢,我需要先定位到这个文本框,然后为这个文本框绑一个什么事件呢?是不是敲键盘事件呢?这个敲键盘事件咱们得捕获那个键盘码值为13是回车对吧?好。
02:00
找一找啊。还是来操作这个detail这些无用的,我先我先关一关啊,这个一会用到手上再打开啊来看看吧,咱们这个关联市场活动的模态窗口啊,找一找。大家注意看,是这个不?我在这个查询后边填个123啊,咱们来看看是不是他。你看是不是我填了一个123的是他吧,行没问题啊没问题,好,那么在这我给它起个名字吧。ID啊,我来叫activity name,咱们说根据这个名称,市场活动名称来搜啊,我简称叫a name吧,行吧。哦。绑事件啊,一定得写在咱们这个刀乐放身里面啊,好来,为什么呢?
03:02
为我们这个啊搜索啊这个啊,关联市场活动的这个模态。窗口中的什么呢?这个啊,搜索框啊。搜索框来这个啊,绑定事件是这样吧,好,然后啊,通过这个啊,这个回车键。来这个查询啊,并展现。好,这个啊,所需。市场活动列表啊,来个a name,点什么key key down是吧,来个function,这里边咱们得填个Eve,还记得吧,好,如果这个evet.t。
04:02
扣的等于13,是不是说明是这个回车键呢,对吧?好,如果是这个啊回车键。好,咱们是不是相当于展现关联的市场活动列表,对不对,好。查询并展现啊,这个市场活动列表没错吧?大家注意看咱们的这个搜索框啊。注意看我在模态窗口里边这个文本框,如果我点个一,它不会发生什么,二三都不会发生什么,对不对,现在更重要的是什么呢?我们现在要敲这个灰车,敲灰车咱们是展现市场活动列表啊。展现完之后大家注意啊,对于模态窗口,你敲回车啊,它会默认的给你触发一个事件,叫做什么呢?叫做强制刷新当前页面,而且数据清空啊,注意看。
05:09
看到。能理解老师意思吗?大家注意啊,我我把这个乐先给你去掉啊,我给乐先给你去掉行吧,乐先去掉啊。大家注意看了啊。你说点一没事,点二也没事啊,我现在敲黑车走一个,也就是说啊,在模态窗口中啊,它默认触发一个什么呢?强制清空并刷新这个当前页面的这么一个事件,这是它默认的行为,OK吧,所以说这个默认的行为咱们是不是应该给它禁用掉啊。对不对,但是敲回车我们是有意义的,我们要查询并展现关联的市场活动列表,对不对?展现完之后,咱们是不是应该把它默认的行为给他禁用掉啊?OK啊,来。
06:01
这个是啊,查询并展现市场活动列表这个东西啊。展现。完列表后啊,要记得。讲什么呢,这个啊,模态窗口默认的这个啊,回车行为啊。行为啊,给它禁用掉,那怎么禁用的?这个东西很简单嘛,我在查询并展现完市场活动列表之后,我是不是相当于我就应该把这个方法给它强制终止了。怎么了?Re,什么?False,是这样吗?这些东西咱们是不是用啊,哎,处方完它查询完铺上列表之后,哎,就完事了,这是我们想要的对不对。来看看啊。马云,咱们再进来啊,关联市场活动好敲一没事,敲二没事,咱们再敲个回车,走一个查询并展现列表,就列表是铺上了,铺上了之后那就铺上了呗。
07:11
是这样吧,哎,这是我们想要的,OK吧,所以说我们一切的与查询并展现市场活动列表的这个行为,是不是必须得写在return for的这个上面呢?对吧,好,那现在啊,咱们来查询并展现市场活动列表啊,好,走一个阿贾克斯,好,我们现在来处罚一个这个请求,好,咱们现在仍然是get activity。例仍然是要查询市场活动列表,是这样吧,你看啊,跟我们下边的是不是很相似啊,同学们看看是不是也是查这些项啊,市场活动列表你也得铺它对不对?好,但是大家注意看啊,我要查的这个列表都有。
08:02
哪些条件呢?咱们首先看第一个条件啊,这个第一个条件,比如说我来一个传单两个字,我是不是得查这个带传单两个字的这个市场活动啊。对吧,怎么玩啊,咱们得掰一个什么条件掰。就得掰个内啊,得根据这个名称得模糊查一下对不对。只是根据名称模糊查吗?还有什么?开始日期、结束日期。没有啊,我这不就一个框吗?不就是根据市场活动名字模糊查吗?我没有那些其他的框,你们说的是查询出来的这个信息吧。对吧,咱不不所查询出来的信息啊,这个一会儿简单,我现在问的大家是这个咱们查询的这个条件呢。条件是不是只有这个传单,这个市场活动名字,按照这个名字模糊查。
09:10
有同学说了,老师啊,我根据这个所有者查啊,所有者咱们比如说来一个姓张的行吧,是不点一个回车也能查,但是大家想一想,这种需求是不是会很模糊啊。为什么说它很模糊呢?也就是说就这个东西大家注意啊,对于这个名字这种东西大家注意啊,是不是咱们只是去插这个关联的这个市场活动的什么呢?这个是活动的这个名称是不就行了,第一是没有必要关联所有者。没有这种需求啊,查姓张的这个市场活动其实是没有必要,你就根据这个名称模糊查就行了,OK吧,那第二个是啊,同一个啊,同一个这个信息啊,我们到多个这个字段信息中去查,将来会有这么个需求,但是我们今天没有OK吧,好,也就是说我们就根据市场活动的这个名称模糊差OK吧,我想说的是什么啊,我们要根据,比如说我就来个传单。
10:07
我就把所有的传单两人的全查到吗?哎,也就是说大家注意啊,我们是不是。看看下边发传单二和发传单三。怎样?是不是已经关联过?是这样吗?我们再查询出来,比如传单俩字,你仅仅只是根据名字查错,发传单二,发传单三,也得列到这里边儿来啊。那你再点击再关联是不是没有必要了,重复关联那不行啊。是这样吗?这可不行啊,也就是说啊,没有必要,我们现在所列出来的肯定是什么。哎,没有关联过呢,对不对,所以说咱们第二个条件应该是没有关联过的对不对,好,咱们来个怎么着and。
11:04
是吧,我这个给你写长一点啊,啊,其实以后实际项目开发没有这么长,OK吧,我现在就是为了让你看这个需求啊,让你知道这个请求的这个目的,OK吧,And没有关联过马云的,是这样吗?对吧,好,所以说咱们来看not by ID可以不。是不是没有关联过马云的,我得列出来啊。对吧,好,至于怎么查,一会儿再说OK吧,行,我先把这个请求啊,先给他补上啊。行,这个data咱们应该传点啥呢?首先是名字吧,啊,咱们来个a name,这个是必须的对不对,根据名称模糊查对不对。来一个,到了点儿。为什么?是不是叫A对不点VL取个值对不对,还得来一个什么可录ID,是不是也得穿一下这个可录ID在我们的这个一表达式中呢,c.ID对吧?好tap做查询,好D它仍然啊是一个。
12:21
市场活动的这个接身数组啊,来来我们的。市场活动一。二。三市场活动123啊OK吧,行,我们来往下翻啊,这应该是在最下面。诶啊,不是他在那个模态窗口上呢,是吧,模态窗口上。在这里啊,哎,又来了一套这个市场活动列表,这回这个提包的是不是应该跟刚才的这个区分开啊。
13:03
啊,我来个叫什么呢?我来个查询出来ser search标对吧,总之跟它区分开就可以了,OK吧,好。咱们还得拼一下啊。VR怎么来HTML?到了点。Each function,每一个就是每一个市场活动,对吧。行。来HTM加等于。好,首先我们是有这个复选框啊,同学们复选框,复选框应该给他负杠。
14:08
ID这是肯定的,对不对,我们以前给这个附小框附ID是为了做修改,做删除,我勾我才知道改哪条算哪条,这回我挑勾是为了做什么,做关联,是这样吧,这个ID啊也得要,所以说我们给他来一个value。等于。n.ID啊,我再来一个比较熟悉的啊,咱们来个name等于。是X等于,所以说很熟悉啊。对吧,好一会儿咱们还得取这些挑勾的,对吧,市场活动的名称。N点。Name这俩是什么?开始日期,结束日期,所有者跟下边数都保持一致的对不对?好,来一个开始日期啊。
15:02
n.start date。好,下边咱们来个。And。Date所有者啊,既然有所有者,咱们一会儿是不是还得关联user表对吧,N点。Owner。好,把咱们这个HTML给它铺上啊。咱们叫activity,是不是叫色细胞点啊,对吧。点。HTMLHTML。啊,也就是说咱们把这个列表啊给它啊给它列上,现在还不至于关这个模态窗口,将来咱们在做完关联之后再关这个模态窗口,对吧,分成两步啊来执行。行,我们来看看这后台啊。嗯。好,再来个分支啊。
16:08
这个是要查询市场活动列表对吧?怎么查呢?根据名称什么呢?模糊查,是这样吗?结合什么呢,排除掉。啊,已经关联定指定线索的这个啊,列表是这样吧,好。咱们把这个参数啊,先接收一下啊,这个参数咱们传来一个a name,传来一个Lu ID对吧?好军,咱们来一个a name。Request来get parameter ona name啊。
17:01
好,再来一个。ID啊。这两个东西大家注意,咱们是不是将来肯定得传递到这个SQL语句当中啊,都得传递到SQL语句中,都是查询条件对不对,所以说啊,咱们现在干脆在这儿打个包给service可以了,或者你给service在service中打包都可以啊,对不对?好给打包成domain或者是map,咱们是不是用map就可以了,对不对。好。Map string。这这这再来两个string数就可以了,对不对,都是string类型啊,我们来个map,又出来一个map。子君子君啊啊,我昨天看有些同学把这一句话。给它粘到咱们这个test一点这个GSP里边了啊,我感觉做的做的挺好。啊,这一句就不爱写了是吧?啊,直接粘过来,直接拿着用的map直接粘过来就行了,我我感觉挺好啊,你应该逐渐的去完善你的test GSP是这样吗?
18:08
好,比如说啊,还有同学啊,就我昨天观察到的啊,把咱们那个布尔值那个flag等于true if count不等于一,Flag等于false也粘过来了,我感觉做的都挺好啊,啊就这些东西重复的东西啊,就应该往这边粘,是这样吗?行啊,但是我这些东西我就不粘了啊,因为有一些东西,它这东西粘多了吧,他他在讲课的时候没有代入感是吧,你们可以粘啊,你们毕竟是以完成项目为主嘛,对不对?好put咱们来一个叫a name行吗?A name,再来一个ID对吧,好,咱们来个。好。那个业务层。CS咱们调一个点。
19:03
看看啊。大家注意看啊,我们现在这个需求啊,是不是仍然是要取市场活动列表啊。那既然是市场活动列表,咱们是不是应该还得用市场活动的业务啊?能理解老师意思吧,所以说啊,这个咱们还是得来一个activity service是比较好的,对不对啊,这属于啊我们市场活动相关的业务,到时候你到这个市场活动业务层,你去查看这个观察这个源码,或者说维护啊,所有查市场活动列表都写在这里边的,也好维护OK吧,给他拢到一起了啊,来as啊,咱们调一个它传个什么同学们。说map呀,哎,参数传递到里面,返回一个市场活动列表,我们来act还是a list,今天上午咱们查了两个这个市场活动列表了,对吧?Print Jason啊啊来response这里边呢,来个a list啊给打到前端。
20:10
好,市场活动的这个业务层。啊,来找到。来个a list找一下activity对吧,Get一下。啊,咱们创个map。把这个a list啊给它返回,关键点就在咱们怎么查上了,是这样吗。X t to XL。来。把它拿来啊。
21:02
Result type I can。Select,咱们来from TB,首先我们要确定的是,肯定要展现所有者。是这样吗?先把最基础的先铺上啊。Join t b lo user,咱们来个U,是这样吗?Ona点等于U点。ID啊,我看有一些同学习惯于在这里边儿这个等号加一个这个空格啊。呃,我个人的建议是在Java里边这个是必须得加的,OK吧,这是必须得加的啊啊这里边儿咱们就尽量不要加了。OK吧,其实在这个数据库描述这什么呢?描述咱们这个连接条件或者是查询条件的时候啊,我们一般来讲都是不加这个空格的,OK吧,好呃,其实这些个这个标准的这个规则都是来自于哪儿呢?这不是我发明的啊,这是谁发明的,现在咱们中国的这个业界标杆是咱们那个阿里巴巴出的那个标准。
22:08
OK吧啊,是有一本书的啊,那本书是25块钱,那本书也不是我出的啊嗯,我不是不是不是说给你们宣讲这本书的啊,那本书这么就这么薄。25技术书里边最便宜了就是一就是标准,比如说你这个命名应该怎么命啊,能理解我意思吧,命名怎么命啊,什么符号怎么写啊,空格空几位啊,都是这些东西标准能理解吧?啊好,咱们现在来看看这个查询项啊,都有什么啊。咱们要查,首先ID得查对不对,ID名称,开始日期、结束日期,所有者对不对,好,咱们要查。ID,然后name start date,还有什么and date以及什么呢?
23:00
Owner所。好,来一个A。点ID啊,这些都是A点系列的对不对,a.a.a点只有它是u.name is ho OK吧,好,那么。对于查询的这个结果来看的话,我们是不是不用关联所谓的那个第三张表,关联关系表,你看这些东西咱们是不是都成功的查到了,想要的同学都有了,对不对?但是呢,在查询条件当中,咱们貌似是不是还得用一下关联关系表啊,我们现在一共有两个条件,这两个条件是以map的形式打包传进来的,注意看啊,是不是给我们传了一个map呀,这个map里边有两个条件,一个是什么呢?市场活动名称,咱们得按照这个名称模糊查,还有一个是clue ID,是这样吗?马云的那条ID嘛,咱们得抛开那条ID关联的市场活动,对吧?首先来看第一个条件,很简单的啊,Where a.name是吧?
24:03
来咱们传的那个东西叫啥。叫啥来着,是不是叫a name,哎,必须是这个key啊,A name对不对,来一个空格。百分号OK吧,好,这个值得注意的是什么呢?有些同学那个输入法啊,尤其是那个啊搜狗啊,你看老师现在用的也是搜狗,对吧,大家注意有一个是不经常出现的这个错误啊,不经常出现错误,有可能你一辈子都遇遇不到啊搜狗输入法有些时候什么呢?你看啊,咱们现在是不是用的这些个符号都是半角的对不对,你看这些个空格,是不是每一个空格都是一个字符对不对。好,要么就是中文。是这样吗?好,这个搜狗它有一种。方式是什么来着,我有点忘了啊,它是一点占1.5个还是1.2个那个那个空格你看不出来。这个东西啊,会使得我们整体那个SQL语句啊都不好使,所以说呢,就有些同学啊,有可能就查啊。
25:06
查这个搜索语句就对比老师的啊,跟老师的简直是一模一样,哎,把我的粘上就好使,你的就是不好使。哎,就你就用肉眼看就一模一样,就一个字符都不带差的,但其实呢啊,你用那个输入法,它会把什么呢?它会把你有一些个这个空格,你看我们现在啊,我给大家举个例子。欣能老师用的这个肯定是中文的逗号,这是不是能看得出来啊,这个是英文的逗号,对不对,这是一下能看得出来,你看它占这么大,它占这么大看到没。就一看就能看出来啊,那搜狗它有一种拼法是什么呢?不知道怎么切的啊,我我现在演示不出来,他就是切法什么呢。是在这二者之间,它比这个能稍微宽那么一点点,但是你用肉眼看不出来,这个逗号跟这个英文逗号是一模一样的。哎,他就是不好使。啊,所以说啊,也有可能是这种情况啊。
26:01
啊,但是它不不常出现啊,你搜狗你正常安一版,你就别乱切换就行了,OK吧,行,这个是咱们的第一个条件,根据市场活动名称模糊查,是这样吧,接下来呢,And什么同学们,我应该按大家注意看啊,我应该按这个CIDA506马云的这两条记录关联的是不是这两个activity啊。这两个TD所关联的这两条市场活动记录,是不是不应该在我的查询范围之内啊?对不对,怎么办?嗯,的。A,点什么同学们ID吧,应该什么?这回是不是应该not in呢?对,Not in咱们这回。啊,那比较麻烦,还得只查询是吗。来吧,查吧,Select,咱们要查的是什么?咱们这回要查的是activity ID对不对,Activity。
27:04
调查的是吧?From t BL什么?Relation tbl activity relation,对吧?好,Where,马云对吧?条件是马云啊,ID等于我们传递进来的这第二个条件是不是就叫这个ID啊?对吧,好啊,应该给他排除掉,是这样吗?啊,也就是我查询出来的这个记录啊,应该not in谁呢?Not in马云关联的这个912C和7D53,应该把他俩排除掉,对吧。行。咱们来试一试啊。至于这个结果,咱们再改一改啊。发出来一二。
28:03
哎,这个这个这个不好看了,这就是吧,嗯,我来个1122,来一个1122AAA。这个是带一相关的啊,比如说带一相关的,再来个带二相关的。二。啊,这符号都出来了啊。百度推广。等二吧。行,我们现在来看看这个结果啊。起下服务啊。
我来说两句