00:01
嗯,我还是拿咱们这个学生苗举例啊,这个更能容易接受一些啊。三四。五。六多来几条啊。七。八。九。是。11。12。
01:01
好,我们现在来执行一个查询啊。Select from t BL student对吧?好啊,我正常查的话,肯定就是所有记录都给我列出来了啊,一共是12条记录对不对。好,那么咱们买circle中那个分页叫什么来着?Limit是这个吧,也就是说啊,我们买circle啊,作为这个关系数据库啊,是在所有的关系上数据库中啊,它的分页是最方便最简单的,OK吧,好,你Oracle要做个分页得子查询还是很麻烦的啊,My circleq最简单的啊,比如说老师现在来一个零五是不是需要两条件就行啊。好,那比如说我现在来一个运行走一个是不是12345啊对吧?好,那我如果0003呢。
02:00
那第二个条件很好确认呢,第二个条件是什么?是不是相当于每页展现的记录数啊好,那现在比如说咱们就05OK吧,我现在再来一个什么呢。五。哦。咱们是不是相当于如果每页展现五条记录的话,六到十条是相当于是第二页对吧。好,再来一个呢。比如15。11、12、第三页。其实第三页也是应该每页展现五条记录,但是他没有这些记录了,是这样吗?好,所以说咱们这第一个条件它是什么呢。是从从从第几个开始吗?我从第零个开始吗?第一个参叫做略过的记录数,这条SQL语句是这么来读的,同学们啊,也就是说现在我要查询学生表啊,我现在要略过零条取五条,是不是就是前五条记录啊?
03:15
那这个我给它改成五呢,这个你们来读。略过五条,取五条,那是不是就是六到十条啊。对吧,那如果我来一个15,略过十条取五条,但是最后呢,他没有五条了,把我们最后这两条就取得了,OK吧,所以说我们现在需要的这两个参,它分别是什么呢?第一个参叫做略过的记录数,第二个参叫做每页需要展现的记录书,是这样吗?但是。我们作为前端page number和page来讲,给我传递到后端了,我们后端看看这两个参数。
04:04
是不是其中有一个page size,这个咱们是有的。是不是它相当于什么呢?每页。展现的。记录数啊,哎,这个咱们是有的,对不对,但是略过的记录数咱们没有,那么咱们传递这个page number,这个目的呢,就是为了去计算这个略过的记录数,OK吧,好,接下来啊,我们来计算出一个。好计算出啊,这个略过的记录数啊,略过的记录数,好我们来一个呀,这个东西要算的话,你说还得。转一下是吧,你用string算不了,咱们得格式化一下是吧,哎,这个这个咱们来来一个str吧,啊都来个str啊,咱们来一个真正的这个page number啊,来个in点。
05:04
Value of啊,Page number SDR,没错吧?啊,下面这个也是啊,咱们来一个int page。S等于inte.value of啊,Pageg size s tr,好,我现在算一下略过的记录数啊,略过的记录数我给他声明啊,声明的这个标识符叫做。Skip count啊,略过的记录数啊,怎么算呢?同学们,Page number。减一。是吧,乘以。Page set,其实这种算法就是总结出来的一个经验而已,OK吧,好,给大家看一看啊,比如说我现在要展现第一页,一减一得零,零乘啥都得零,第一页是不是相当于略过零条啊?
06:03
我现在要展现第二页二减一得一,一乘五得五,第二页略过五条没错吧?那第三页呢,三减一得二,二乘五得十,第三页略过十条,没错吧,哎,这就是一个总结出来的,OK吧,好,那么我们现在啊,该有的东西有了,原材料拿到了,归控制器拿,对不对?那接下来干活是不是得让业务层去干活啊,我控制器把原材料给你业务层,让你业务层去干活,是这样吗?好,但是大家注意啊,我是不是得将这所有的原材料都给业务层,将来业务层得把这所有的信息一股脑的给扔到这个道层,让道层去做查询,是这样吗?所以说啊。反正早早晚晚的这些参数都得扔到倒层,你能不能够把这些参数零散的打到倒层,不能吧?
07:01
还记得吗?给咱们SQL语句传参数,你能同时传递多个参数吗?不能,所以说这些参数咱们是不是应该给他打包一下,能不能封装成一个刀面,不可能吧。是不是还有这俩东西,你封装物料对不对,还有这个呢,对不对,好,那么咱们只能怎样了。有同学说用map,有同学说VO,大家注意啊,VO可不是你在打包参数给后台传的,VO是展现,指的是从干嘛?后台拿到数据之后给页面展现的,你们正好说反了OK吧,也就现在我是不是拿到这些参数是往里传,让道层去做查询呢。这可不能用VOVO是干嘛的呢?VO是从底层把数据拿查出来之后,我们封装不了了,创建一个VO封装,然后往页面上传,能理解吧?OK吧,好的,那么我们现在啊,是不是使用一个什么。
08:06
使用一个map就可以了,对不对,好,来,咱们来一个map啊,String。Object。Map啊,六出来一个哈,Map string。Object好,Map,咱们put得put好几项呢,是吧。嗯,234。五六一共是六个餐是吧。首先啊,咱们来这个name。然后honor。Start date。End。
09:01
啊,佩那边还用穿吗?不用了吧,Number传过来的目的是不是为了计算这个skip count对不对?好skip count一下啊,然后咱们这个什么。Size是是这两吧,Limit米后边是不是先跟他再跟它俩参数啊对吧,好。OK啊,原材料咱们打包成map了啊,然后接下来我们来业务层啊,让业务层干活呢,Activity service啊,这个暂时咱们先不copy啊,再写一遍啊,再熟悉熟悉。等于什么?Service factor点什么?Get service里边new service。行了,很熟了啊,那以后这一句我就copy了好吧,嗯,好,我们现在来as调一个点拍。
10:03
List OK吧,传什么同学们。是传卖法呀,好,也就是你拿到原材料你得用啊,你得给业务层啊,对不对,好现在问题来了啊,返回资源返什么,这个要会反了啊,这个阶段就没问题了,我要返什么?哎,我现在比如说我现在是控制器行吗?我是控制器行吗?老师现在扮演控制器啊,我现在在想,哎,我让业务层给我拿什么呢?我是怎么考虑问题呢?我要业务场管拿什么,是完全在于我这个前端他要什么呀。对不对?前端要什么,我就让业务层给我反什么,对不对,那前端要什么,咱们来分析一下。前端。要的是一个什么呢?市场活动信息列表,还要一个什么?
11:04
什么查询的总条数,这个还记得吗?记得吧,OK啊,这是我们前端业务的信息,我让业务层干活最主要的目的也是为了给我返回这两项信息,是这样吗?OK啊好,那么业务层拿到了以上两项信息之后啊。业务层拿到了以上两项信息之后啊,如何做返回呢?哎,这回业务层可以选择使用什么map或者是什么。VO是这样吗?好,那这回咱们选择使用map还是选择使用VO?哎,咱们怎么区分的这个东西,哎,服用率高就用VIVO,服用率低,咱们就临时用map对不对?好,那以后就这种需求,服用率高还是低呢。
12:05
相当高,为什么你不仅仅只是市场活动这一模块,那将来我线索模块,客户模块,联系人模块,交易模块等等等等,是不是都得做什么呀?都得做什么,同学们,哎,咱们这个分页操作呀,是这样吗?都得人家都得查列表做分页是这样吗?哎,所以说啊,咱们现在啊,选择使用这种VO的操作OK吧,那大家现在想一想这个VO啊。我们比如说啊,咱们要用到一款叫做。配。Nation的这个理由,我现在假设给他起个名。就是做这个分页查询的VOOK吧,那这个VO里边都有哪些属性呢,同学们。
13:00
Private private什么?啊。来咱们一个一个来啊,不急啊,注意力集中,同学们啊,注意力集中,首先我们选择,如果选择使用map的话,这个map怎么操作。map.put一个是什么?同学们,是不是市场活动列表啊?咱比如说来个list是data。List,然后map掉了点put。这叫什么to?然后这个咱比如说来个to TL是这样吧,好,那最终咱们把这个map给它转换,为什么呢?这个接身串是这样吗?那么咱们使用的肯定是那个工具,那工具叫做。杰森,是这个吧,好,那么最终转换成了这个接身串,肯定是我前端想要的这种形式,用map肯定是没有问题的,对不对,那现在VO呢。
14:02
那是不是相当于这俩map中的key,就是相当于是VO中的这个属性啊,对吧?好,首先咱们来一个int totl。可以吧,哎,再来一个private什么,这个问题来了。嗯。大家想一个问题,我要的是不是肯定是一个什么,然后。List市场活动信息列表啊。没错吧,你看看这个data list是不是就是咱们这个activity的这个list对不对,但是就这种VO你以后还能用啊,不能用了,你线索用不了了,交易也用不了了,客户联系人都用不了了,因为你把这个泛型是不是写死了。是这样吗?所以说咱们这个泛型啊,它强大的地方在哪儿呢?大家注意看啊,以前我们可能没用过这种形式啊,我们现在要在类上来一个总泛型叫什么呢?
15:05
T,然后这里边儿咱们要给他卸货,将来啊,我在创建这个配nation VO对象的时候,给这个T里边传的是什么,我这个list里边它就是什么,能理解吧。好,那例如我现在创建一个page VO往里边传一个什么呢?Activity,那这个list代表的就是activity,那将来比如说传线索clu,那这里边就是一个clu OK吧,我们一定要让VO达到一个什么呢?通用性,这才是我们创建VO的目的,是这样吗?OK啊好,那现在啊,按照这种形式来,我们应该来一个VO啊。这个VO啊,也是属于这个项目的啊,任何模块都可以使用的一个通用VO啊,咱们来一个包。啊,就叫VO了啊。好,又出来一个class啊,咱们来个叫。
16:03
Pageg,行吧。里边我要写个啥来着。我是不是要写个泛型啊,对不对,好,Private,咱们先来一个in totl,再来一个private list,什么同学们T,然后来个。How let s?这个图string啊,你想写就写上啊啊,不写就拉倒,嗯,暂时的也没有用,OK吧。啊,最标准的这个你有就行,OK吧,好所以说啊,通过我们的这个分析啊,这个将来啊,好,这个分页查询啊,这个每个模块。模块啊都有是这样吗?好,所以啊,我们选择使用。
17:03
一个通用的这个VO啊,这个操作起来。啊,比较方便,OK吧,那么我们的这个方式是什么呢?通过这个VO将和这个data list。把这俩值给它封装起来,是这样吗?好,我们现在来看一看啊,来一个page nation VO好注意看了,同学们啊,我们现在在这里边要传的是一个什么呢?X。TT,是这样吧,我们来一个VO,等于谬出来一个pageg VO,好,那大家注意,当我为这个类里边传一个activity之后,请注意这个例子里面就是谁了。Activity了,能理解吧?好,咱们来个Vo.set total,咱们to。好,VO点什么呢,塔。
18:04
List里面穿一个data list,那大家注意,现在这个data list很明显就是一个谁了,是不是activity的这个list?那最终呢?是不是一个道理,跟map处理方式一样,使用谁print杰森将纤维将谁VO给它转换成什么接身串吧,好,最终呈现的形式是不是仍然是这个呀?没错吧,好都可以啊,行,但是为了达到通用吧,咱们还是用这个V比较方便啊,行了,业务层给我返个什么。好,从头捋业务层啊,我现在是控制器。对吧,哎,我让业务层跟我返啥呢?在于前端管我要什么,前端管我要个市场活动列表,前端管我要个总条数,是这样吗?所以我要让业务层。给我查一个市场活动的列表,给我查一个什么呢?总条数是这样,业务层需要给我返这两项信息,是这样吗?这两项信息业务层选择的方式是将这两项信息给它封装到一个VO对象中,是这样吗?
19:16
给我做返回,好怎么怎么办?那叫page view是这个吧,好,里边是什么呢?Activity,咱们来一个VO是不是就行了?好,最终将VO来一个print Jason调一个OBJ传一个response o BJ传一个VO是不是就行了?好,它会自动的把我们的这个VO啊,给它转换为我前端想要的这个模样,是这样吗?OK吧,行了这个再反映反映啊,因为这个东西啊操作啊每天啊越来越多啊,流程越来越复杂,为什么选择使用VO,这个得学会了,OK吧,好。
我来说两句