00:00
好DAODAO层的设计呢,我们采用了这样的一个方案,我们最顶上有一个dau接口,这个dau接口定义了DAO的基本操作,我们看一下这个接口。这有什么呀,比方说有insert,有update,有query,有query for list,就是我这个查询之后一个对象吗?就查询之后是一个对,呃,是对象的集合啊,获取某一个值以及bench啊,批量操作,哎。这个DAO里边需要注意的是什么呢?大家注意我是不是没有传入connection呢?啊,我们暂时的方案是在这个里边先来获取connection进行操作,到后边我们讲操作事物的时候,我们会告诉大家我如何来,嗯。进行在这个方法里面来获取统一的connection,那我们开始实现的时候,我们先需要在这个里边自己人工的去获取。
01:12
当然也需要关闭,开始的时候我们知道这里边一个一个获取connection的话,是不是无法保证这个事物超作呀,这个债务后包我们讲事物的时候,我们会解决这个问题,暂时先这样做。好了,这个DAO,然后呢,我们提供这个base DA实现这个接口,实现这个接口的话呢,我们采用d bos提供这个DAO接口的具体实现,这仅是一个接口,这是它的具体实现,这个实现的话,我们看看这个。这个我们前面是不是已经写过了呀,还记得吧,写过好几遍了,阶梯必须的时候写过讲那个,呃,第一个。答,MVC案例的时候还写过,那现在的话呢,大家可以把以前那个copy过来,如果你觉得以前哪块要是搞不懂的话,再写一遍,最后一次真的是最后一次。
02:08
回来好了,这完了之后的话,我们还定义了一个不可dau,这又是一个接口,这个接口是什么呢?它用于定义操作book可实体类的具体方法我们看一下这个类。哎,这这个不会理,比方说我根据ID获取某一本书,比方说我根据这个封装条件获取搜索对应的这个配置信息,好了,关于这个c book跟配置,我们一会需要说明一下,好如此下面有一些方法。呃,每一个方法上面的话呢,我加上了一个详细的注释,大家看这个注释的话呢,就可以来对其进行实现。过来。好了,Du接口。
03:01
好,现在的话呢,我们需要来看一下。分页相关的信息,我们现在我们说的这个分页啊,我们是在DA底层说的,然后的话呢,我们拿出它的具体设计来。就是说这个配置啊,是如何来设计的,然后呢,我们先来写这个DAO,我们看看哈,关于这个分页大家看,就是第一页长成这样,这个首页的时候呢,没有首页跟上一页好了,当我按下一页往下翻的时候,比方说我要翻到这翻到第三页,是不是由这个首页跟上一页,还有下一页跟末页,我要是翻到结尾页的话,没有这个下一页和末页,大家看见了吧。在这儿呢?嗯。你看这个时候这是第一页,我按下一页,嗯,有首页了,摁首页没有按末页,只有首页跟。
04:02
上一页这要一点的话呢,全有了,所以说我们这块有一个什么呀,如果你要是已经是末页了,你要再点下一页跟末页是不是没有意义呀。把那个给隐藏了,哎,这是我们这块需要注意的一个点,好了,然后呢,我们需要来分析一下。分析什么呢?我在这个页面呈现的时候,比方说诶,我现在呢,我需要显示这一页的内容。我都需要从。Sol的请求域里边获取哪些信息?我再说一遍啊。当我需要显示,比方说我显示这个第三页的时候,我显示这个第三页,那毋容置疑这些信息,比方说harmlet啊,Spring啊,CVS啊,什么54 55 56啊,包括这个作者呀,包括共多少页呀,包括当前第几页啊,是不是来,是不是是来源于数据库啊。这个清楚吧,那所以说我要想显示这一页的话,我有哪些内容。
05:07
需要从request里边一个一个获取呢。哪些内容啊,我们看我们看这个整个这个Le作者以及这个价格,这是不是对应了一个书的集合呀,是吧,所以说这是一个list,在配置里面有一个list好了,当前第几页有一个配置单本吧。当前第几页配置number好了,共多少页有一个共多少页应该是有一个total配置number,但这个title配置number可以怎么办呢?我可以通过total item number总的记录数和每页显示多少条记录。看他俩。哎,我这个共多少页,我可以根据配置size跟total item number,就是总的记录数跟一页显示多少记录算出来吧,懂吧,这个对应的是谁呢?实际上是它。
06:16
叫get total page number,但这个呢,是根据这两个算出来的,清楚吧,好了,那我们没有说往request里边一个一个去放属性,而是封装了这样的一个类,这个类就叫H。配置里边至关重要的四个属性,第一个配置number啊,当前第几。还有list。当前页显示的集合的一个封装,还有page size跟total item number,你你得告诉我,我得知道啊,当前页面显示多少条记录,然后呢,一共有多少条记录,他俩一算的话,我可以算出一共有。
07:07
多少页,然后其他的一些这个呃,Get的方法,OK,往下看。在这呢,Page number当前第几页list,本页需要显示的list,然后呢,Page size,每一个记录total item number总的记录数,这个总的记录数跟每一页多少记录,是不是可以算出一共有多少页啊?清楚吧,我一共是有100条记录,每页显示。十条记录一共多少页啊,十页吗?那我要一共是95条记录,每页是只能显示十条多少页,是不是还是十页啊,95条记录最后一页就是五条信息呗,对吧?好了,然后看,喂,这个就是个构造器,我在创建这个配置的时候怎么样,我必须知道这个配置number是多少,初始化配置number,然后的话呢,Get配置number,这个get配置number啊,我们并不是简单的把这个配置number返回,为什么呢?因为我从页面上传过这个配置number有可能是不合法的。
08:18
有可能是传了一个,呃,很不合理的一个数,什么叫很不合理的一个数呢?看这。上这儿,大家往这儿看。看见这个吧,我这样改111这个很明显不合理的,但是呢,我这块来到的还是11,他并没有出错,改成负的。嗯。哎,它显示的是第一页,但是他并没有说我是不合法的,所以说我从这个页面上传的这个配置number不一定是合法的,我怎么办呢?哎,我只有说我在这个位置。
09:05
嗯。我在这个方法里面,我需要对它进行一个校验,返回当前的页码,但是需要通过这个get total to page number进行一个校验,你不校验的话,有可能返回这个值是不合法的。好了,那get page set get list set list,这个比较简单了哈,这个设置当前页需要显示的list,然后get call to page number。获取当前总的页数,这个呢需要他俩进行计算,然后还有一个设置总的记录数,然后还有一个跟上一页下页相关的is have next,有下一页吗?有上一页吗?返回上一页,返回下一页,其中其中我们加上红的这三个方法需要怎么样呢?这三个方法是需要DAO给我赋值的,那这个值呢,这个值这个不是DA给赋的啊,这个值是在我创建配置的时候,在so里边给我附一个哦,这个值是几,比方说这个值啊,说是第五页发了这个值附进来了,而这个。
10:14
List肯定是DAO把这个list返回给我附进来,或者从数据库里边把这个之后取完之后我附进来,还有一个什么呀,还有它。这个我搞不定,必须得干什么。必须得由。查完数据库之后告诉我多少记录,这个总的记录录应该怎么查,是不是count呀,COD就可以。然后把这个纸往里边一放就完了,那就是封装翻页信息的配置类。我这块说这么详细是吧,大家可以考虑一下这个配置类如何来写。可以考虑一下下一页还有一个是封装查询条件的c book都有什么呢?啊,你看你看价格的最小值,价格的最大值它俩。
11:09
Mean price最小值是0MARK price最小值是什么呢?是inanged ma value这个值肯定够用了,是好几,那很大很大的是吧?还有一个number number,我我也可以放在这个里边,当你页页码,此外都是对应的盖塞的方法。好了,有了这些以后的话呢,我们可以可以来写这个book DA,这是一个接口,这是一个接口,我们看一下这个接口哈,这里边儿的话呢,会有一些对应的方法,方法写完之后呢,我怎么办呢。通洗完之后的话呢,我需要。还是这个图。哎,我需要通过这样的方式提供实现。什么样的方式啊?这里边儿是不是已经写好了那些工具类的定义工具方法的,这里边儿是不是定义方法的,我在这个里面,我需要通过它提供这个方法的实现,听懂了没有?
12:11
因为我这个里边是不是已经写好了什么查询呐,是什么获取值的方法呀,用DP图写的,然后这里边儿是不是还定定一些空的方法呀,我需要用这里边的方法提供它的实现,这就是我们整个的这个,呃,DAO定义的一个逻辑,这专门是一个接口,这块又是一个接口,然后的话呢,这个提供一个具体实现,而这个提供每一个具体的实现。好了,再往后翻。我的DAO trade的DAO item daou的DAO相对而言就比较的简单,到这块的话呢,我们这个DAO层我们就全部说完了是吧,DA完成之后的话呢,我们将来具体看每一个功能具体是如何进行实现今天。
13:09
很大一部分工作就是把这个搞完。把这个DA搞定好了,刚才呢,我们把这个整个这个流程啊,整体的梳理了一下,然后在我给大家发这个,呃呃,发这个文件的时候呢,这个DAO发过去了,不合DAO也发过去了,这个DAO我们需要这是一个接口吧,好了,那这个接口的话,我们说我们需要提供一个什么呀,我们需要需要提供一个base点。具体题目实现吧,是不是基对优求啊啊这个目前可以搞定了吧,好了,然后呢。这个不可DAO刚才我们也写了哈,这个book,可DAO里边的一个一个方法啊,并不难实现,不过这里边有两个啊,生疏的类,一个叫配置,一个叫careeria book。
14:04
好,我们看配置跟c book到底应该如何来写,我大家来写一下。新建一个动态的外部工程。对多少天了,44啊45。嗯。Install。好。新建一个包。哎,我们要写一个配置,还要写一个book,我们这个里边的话呢,我放在web里边分页吗。嗯。
15:01
Book,当然我们这里边的话呢,我们肯定需要实体类,实体类的话呢,我们放在这个短漫里边,短板里边的话呢,会有一个。好,然后呢,这里面还会有一个配置。好,说这个配置啊,是在扇形的,好了,刚才我们大致上看了啊,是有这样的几个,第一个是嗯,当前页。当前第几页,Private in page number第,然后呢是当前year。
16:01
Control o还有什么呀?没多少记录吧,每页显示多少条记录,因为它S等于三就可以调哈,好了还有一个。一共有多少?有。记住好了,然后的话,我们要这是我们四个最基本的属性,然后我们要提供一些。具体的这个方法我们看一下,比方说啊,第一个是一个构造器,这个构造器呢,需要把我们这个配置number进行初始化,然后呢,有get配置这样的一个方法,OK,关于配置相关的构造器。
17:08
只要一个number。构造器。构造器中需要对number进行。初始,OK,再来。这就不写了啊,这个太简单了,Get number,最后返回啊,好,就是这两个方法,再看下一个,下一个呢,就配置size,然后呃呃,List that get方法,这没啥啊,好,Get配置。Set写完再回来看,OK哈,还有什么呢?要获取种页数跟获取种的啊,跟设置种的记录数这两个方法获取总页数,看这个。
18:14
获取种业。怎么获取啊,Public get total page number,零。怎么获取啊,我需要获取这个。总页数好了,我要获取总页数的话呢,我这个页数我们说了需要靠什么呀,需要靠配置size跟total number来决定吧。看咋写你说。An inch page number等于。高,Item number除以配置size,那问题是不一定能除干净吧?能整除的话是不是刚刚好啊,不能整图呢,高。
19:12
Item number以配置size不等于零的话,那怎么办?我得这样。Number加加吧,把它返回。是这么写吧,获取溶液好了,然后的话呢,我们再看这个叫获取说呀,这个需要校验一下,需要校验一下。怎么校验呢?说我这个配置number不一定就是传过来,这个配置number不一定是合法的,怎么写呢?说如果配置number传进来这个值啊小于零,那我就让配置number等于几啊一好了,在如果我传的这个配置number比get total page number比总的页数还大的话,我的配number是几啊,是不是就是总的这个配配number啊,这个时候我这个就犯法。
20:22
这么找好了,这个也写完下一个方法。是。I can remember。应该是浪琴啊。飞行。因为从数据库里边查完之后的话呢,就是一个浪琴。改一下吧,基本上是够用的,但是返回这个类型是一个浪型。OK,这个写完好。这样的话呢,我们这些方法的话呢,大致上这是写完了,后面还有四个方法啊,有什么前移后夜is has next来。
21:10
B。布尔微信is有没有下一页,我怎么看有没有下一页?Return true或者return for if。如果。Get page number,注意,我们用这个get配置number这个方法返回的肯定是合法的,如果当前这个page number有没有下一页它小于get howage number的话,书中有啊,Return。版,否则什么了是没有啊,好了,Public for is has。有没有上一页?那我如何来判断有没有上一页,Return for?
22:07
有没有上一一样的,如果。要是等于。一就行,如果当前要是第一页的话,是不是没有啊,或者是怎么写这块是这块的话,我们写大于一吧,大于一我就。这个时候有吧,就没有了好了,然后还有。Page。帕布卡特。Get a,对,返回上一页if,如果有上一页的话,如果有我就page减一吧,是不是有我才返回啊,没有呢?
23:17
没有的话,实际上就return get page number,那这个值是就是一样没有了嘛,好了,Public in next,返回下一页吧,返回如果有下一页的话。Is has next,那我就get page number加一吧,否则我返回get page number,这样的话呢,这个类就起来了,这就是我们的page,大家需要结合。结个这个。来写,结合这个的话呢,就很清楚每一个都是什么,以及我后边这个详细的提示好了,这个OK,这个完事之后的话呢,还有什么呢,这完了之后啊,还有的是这一个curricul book,这里边三个属性,第一个我这个是int型啊,我这个所有的这个价格float吧。
24:20
Me price,最小值mark price,注意这个price啊,默认值是0MA price点点max y,这个是很大的23D次方减一。肯定是够用了,好了,然后呢,还有一个位置对应的方法。保存帮我看一下。
25:01
啊,这是构造器是吧,然后是不是就是盖赛的方法了,没啥别的了哈,写一个代餐的构造器。提高了句有什么用啊,是不是方便对这些程序变量进行初始化呀,写完这就行了,这就是我们这两个类,这个不坑,我们过来看啊,回头呢,这里边这个实体类。实体类包括数据表,我会直接把这个实体类给大家,大家的任务是。DAO接口我给了,不合DA接口我也给了,其他接口的话呢,这里边我有详细的说明,大家的任务是把这个DAO的实现类base DAO写完。啊,Book DAO我已经给了是吧,然后的话呢,结合这两个把这个book DA写完,而且写上对应的单元测试,把这个整个这个DAO层做完,这一层写完之后的话呢,我们再写上面就轻松了,好了,下面的话呢,我把这些类发给大家。
我来说两句