00:00
好,下面啊,我们来这个添加一下扉页,因为现在我们的图数还不是很多,哎,如果要图数比较多的话,那这个滚动条呢,那就变得很短,我得这个滚好长时间是吧,我们说这个体验呢,不是很好啊,不是很好,那怎么办呢?哎,我们这个添加一个页码啊,就跟这个平时这个上网的时候啊,在百度也好,什么地方也好,这个查完之后,查完之后呢,直接这个下边有这个页码,第一页什么,第二页什么,这个每页包括显示机条啊显示条。我们都能看到啊,都能看到那这个页码啊,其实呢,我们这个开发的时候呢,现在有各种各样的工具,只需要你比如把那有用的数据给它,呃,设置进去,这个页码就能显出来了,那现在呢,我们这个呃,不用那任何工具也是我们自己啊啊手工啊,就是自己写啊自己写,那要自己写的话,这个时候呢,我们干什么呢?我们就需要这个知道一下啊,在我们这个实现这个页码时,里边呢,都有哪些数据,哎,比如那我将来我们这个首页就有一个啊就类似的,我们就将来就实现像这样的啊类似的一个页码,哎,只是跟它有点不一样啊,不一样,那我们将来呢会怎么样呢?哎,比如有首页上一页这些超链接,然后下一页末页,哎共多少页,共多少条记录,那这里边,诶中间呢,我们可能会显示什么呢?当前是第几页。
01:17
哎,上页下页等等啊,中间会显示什么当前第一页,当然了,我们也可以把所有的页码给列出来啊,都是可以的啊都是可以的,那好啊,那这个呃,假设呢,中间呃,这就是我这个当前页码,哎,当前页码,也就是说我要实现这个分页呢,当前页你必须得有这个数据,当然了,一共有多少页啊,共多少页啊这个。共多少条记录,共多少条记录,这个记录肯定是通过查数据库才能得到的,对吧?诶,那这个共多少页呢?是怎么得到的呢?应该通过计算得到吧。对吧?哎,比如呢啊,我现在呢,让你一页里边呢,只显示四条数据,或者只显示五条数据,哎,假设是显示四条吧,哎就跟这个一样啊,第一本书第二本书,第三本书呢,哎,第四本书就每页只让你显示四本,然后每页只显示四本,假设我要有40条记录,一共有多少页?
02:08
十页对吧?哎,那不是用这个记录数除以每页显示的条数吗?对吧?那如果我要有41页呢。一页11页,因为那那一条你是是不是也得再重新再加一页对吧,再加一页,所以这块啊,这个总页数呢,就是计算得到的,计算得到的,还有这个当前页就不用多说了啊,当前页就不用说了,另外呢,还有一个,那你每一页每页这比如第一页哎,或者第二页查到的这四本书是不是也得放到一个里边,放到一个什么东西里边,对吧,我们可以比如放到一个切片里边可以吧啊放到一个切片里边啊,然后呢,将来呢,我们样啊,用这变了一下这个切片就能显示出来这几本图书了啊这几本图书了,好啊,我们先这个呃,分析的这几些这些数据呢,我们一会呢会写一个结构,就是写一个结构体,把它作为一个字段存在到一个结构体里边,啊,将来呢,我有了这个结构体这个实例之后呢,哎。
03:00
通过这个结构体实例,拿里边的数据,然后就可以把这个想要的数据呢给显示出来了,啊,那在写这个结构体之前呢,我们先回忆一下你们当初讲这个my circle的时候。哎,用这个MYSL分页那个关键字是什么呀?哎,对limit limit,哎比如呢,我们来这个写一个啊现在呢,我们这个books里边呢,有好多图书,比如那我现在啊,哎哎要求干什么呢?哎,比如每页。每页显示四条记录。显示四条。嗯,我现在要读到第一页。这个四口就应该怎么发。Select清了啊,直接写清了,From这个,诶这个books。然后呢?Limit limit第一个这个参数是什么?哎,零对,第二个,哎,对。
04:01
哎,四对吧,哎,这是第一页,哎,我们来看一下啊走。好,1234没问题,好,那第二页呢,第二页那个零是变成一了是吗是吗。是从四。这个是一吗?哎,四,然后后边不变对吧,后边不变,哎,来看一下啊,这是第二页。好,5678没问题,第三页呢。这个应该是几呀。八是吧,哎,5678,然后呢。哎,九十十一十二好没问题,那通过这个啊,你能得出来一个什么结论呢。你们应该得最终得到了一个结论啊,假设。张田。是这个什么呢?Page number。
05:01
然后呢,每页显示的这个条数是page。哎,那么哎,这个厘米的后边这两个参数呢,可以通过这两个这个page number和page size来表示一下,怎么来表示。Number减一。对,前面是不是就是page number减一哎乘以我们的哎page size,哎page size逗号后边是一个page side page side啊page side好哎我们来验证一下啊,当你这个page number是一的时候,就是我要显示第一页里边的数据,那这时候呢,一减100乘以四零没问题,第二页哎就是二二减111乘以四四第三页哎三减122乘以四八没问题,哎,那第四页四减133乘以这个呃四就是12,所以呢啊第四页呢就是十二四,所以啊我们就得到了这样的一个这个结论,厘米的后边这两个参数,因为呢,哎,我们这个后边实现这个分裂的时候呢,需要厘米的问号,问号那这个账位数候填充的时候,你要不知道,那你就不知道填充什么啊所以呢,这个啊,这个结论你们之前讲的,应该也给你推导出来过啊,推导出来过好,那现在有种大之后啊,我们来写一个这个结构体来实现我们接下来的呃,分页。
06:22
好诶,我们在这个model这块呢,再来创建一个structure。Model动,哎,来右键你有一个文件,比如就叫一个page。新建点够。好,来package。Model。Have。配。好哎,那这里边都需要什么字段呢?那你就得根据我们刚刚想的啊,你这个将来呢,这个分页里边呢,都需要显示什么,都需要显什么啊,首先呢,哎,第一个我们刚刚说了,你每页你像我们刚刚呃第一页呢,查到这四本图书,那这四本图书的需要放到哪呢?肯定也需要有一个切片,对吧,放那个切片里边,将来呢,我遍利这个切片把这四本书查出来,在页面上就能显出来了,就跟我们这个获取所有的类似,我们这个获取所有的,那那得到的也是一个,也是一个这个呃,Book类book的一个切片,Book一个切片,只是那是所有的一个图书放在一个切片里边了,那现在呢,我们这个只是四本图书放在一个切片里边了啊,就跟我们这个类似啊,我们那个获取所有,所以呢,啊第一个。
07:31
来整一个什么呢,哎,比如books。放所有的图书,就是每页里边的所有图书啊,并不是数据库里边所有图书啊,你每页里边诶,比如你要显示四本啊,或者五本啊,或者几本啊放在这里边,哎,这个里边呢,哎,来整一个什么呢?Book。好,这是第一个,那第二个你每页显示的这个,呃,显示的这个条数,显示这个条数配置size或者是这个配音number都需要有啊,都需要有这块写一个什么呢?嗯,配。
08:01
Page number吧,Page number啊这个呢,就是当前页啊,当前页我们整个int这样吧,啊,我们整in这个六四了啊,因为为什么要整它呢?我前面呢,我们发现我们整成in之后,这个从前端传过来之后,我这个解析请求之后呢,用那个r.post form value或者是这个呃,Form value的时候,得到的是不是一个stream,我需要是么转换呢?哎,对吧,转成int的时候,是不是返回的值都是INT64,所以这块啊,为了这个不再强转了,所以我整成个INT64啊INT64就是为了不强转了啊,不再这个写那一步了啊所以呢,我整成INT64了,好,这是这个配number同样的,呃,这是这个,呃,当前页,当前页这块写个注释吧。当前页,当前页啊,这是梅叶。每页查询出来的这个,呃,图书。哎,这个存放的这个切片。
09:00
好,哎,下下边这个呢,是当前页,我们还需要一个什么呢?Page size,就是每页你到底想让它显示几条记录来配置一个size。我也整一个英特。64。好,这个呢,就是每页每页这个显示的这个条数。你们要想让它显示几条图数啊,几条图数好,那有了它之后呢,哎,我们还需要这个总页数,哎,就是将来呢,我在这个前面,我得显示共多少页,以及共多少条记录,所以呢,这些呢,我们将来也需要从这个呃,配置这个结构体里边来拿,所以呢这块啊,我们来再写一个字段叫什么呢?Total page number。哎,这是这个总页数。叫什么呢?哎,总页数。哎,总页数注意这块啊什么通过计算得到。哎,刚刚我们也分析了,如果你要有40条,记住,哎,我如果每页就让你显示四条,那是40除以四,哎,十十页,那如果是41,那等于这个加一对吧,11页,所以这块啊,只是通过计算得到的,好最后一个总记录数total。
10:21
这也整成一三六十四了,什么呢?这是总记录数。哎,通过查询数据库得到。好,哎,这是几个字段啊,几个字段。哦。什么多了一个空格呢,来啊,我们这呢,写一个这个注释。配结构。好哎,写完它了,那写完它之后呢,我们得有一个这个呃,专门为我们这个分页来这个服务的一个呃,函数了一个函数了,所以呢啊,我们找到我们的补课。
11:08
这块来找到我们这个Du。他这是,哎,来写一个什么呢?来实现分页的一个函数。那我就写到下边了啊,写到最下边了。Get一个,比如page books就这样写了啊什么的,就是获取什么带扉页的。分页的这个图书信息。好,诶,Thank get一个page。好,那这里边呢,传什么呢?哎,你想了,将来呢,我这个页面上呢,会有超链接,比如说我要点下一页诶点下一页诶点下一页,或者在这块输入一个页码点确定,哎要跳转肯定呢,需要给我传过来一个页码,传过页码,所以呢,这块啊,我们这个诶传的一个参数呢,我们就写一个配金单了。String string,好,那最终返回一个什么呢。
12:03
是不是返回那个配件对吧?哎,返回配集也就是说我在这一个函数里边,哎相当于就是把那个配集结构体里边需要用的字段呢都给它,哎设设置上设置上之后的这种返回返回回之后我们就可以这个得到,哎在这个页面上啊,就可以能显示出来这些分页的些信息了啊。好,哎,最后呢,返回一个这个配底。要一个model,一个page,还有一个哎括号。好好。Model保存哎保存好,哎就是这个啊,返回一个这个配置,将来呢,这个里边这些东西我都都是通过这个函数在这该查的查,该计算的计算,就给它这设置进去了啊给它设置去了,好那在这呢,我们来先获取一个什么呢?获取这个总记录数。来我们现在什么呢?啊,这个获取这个呃,数据库中读数的这个总数。
13:05
好,我们先需要写一个SQL语句了。Circle s tr,好等于,那这个是不是select count括号星。对吧。这是不是就能查到总数了?对吧,得到的就是一个数啊,得到一个数啊,这个总数啊,总数select count,好,那得到它之后呢,下面。我们来该该执行了是吧。加个啥?唱的爱的一个阶段。呃,不用了。Select count,最终这个在这个数据库里边,不就是一个count吗,Count吗?
14:06
你说要起个别名是吗?最后是它也行啊,我我我不是直接要把这个值读到一个变量里边吗。我是读到那个count。对对吧,不用起也行吗?我上面这个东西用不着嘛,对吧,直接是不是付给那个配件对吧,直接付给配件啊,所以呢,这个你不用起啊,不用起,当然了,你起一个也也没问起啊,因为我们这个其实上面这个名字无所谓,对我们没用,我们要的就是下面这个值啊。来啊来看看,哎下面呢,我们来这个执行,哎,那执行之前这样啊,我们这个先整一个变量,为什么要我这个不直接读到这个配置,哎,创建一个配景啊,不读接读到里边,因为我们那个总页数是不是要根据这个配奇S这个操作配给抗的总计度数要进进行计算呢,对吧,进行计算啊所以呢,这块我们就来什么呢,这个设置一个变量了,比如玩一个什么呢叫total。
15:02
讲一个什么呢,我们是一个。64是吧。啊,这是一个,嗯,总记录数啊,总记录数。等技术数。好,哎,那下面呢,我们来执行,哎,把这个数呢给它,呃,这个设置上啊,给它设置上,用这个us点一个DB。给点一个。Query。关于肉吗?然后不是SKY吗?扫描,然后扫描到这个total record里面吗。诶,对吧。然后里边诶这个circle。ST2看穿进去啊,穿进去得到一个肉。好,然后下面。
16:03
肉点一个。里边按的。涛涛。Record,诶,这个数候,哎执行到这之后,我这个总记录数是不是就有值了。是不是就是我们这个最终查的这个33对吧,也就是三三好,那这个总计数数有了,有完之后,哎,我们这个刚刚说了啊,总记录数有完之后,这个我每页让它,比如说让它显示这个几条,显示几条之后,下边我是不是就可以计算这个。呃,总页数的对吧,总页数啊,比如呢,这块我们可以整一个什么page啊,怎么设置。设置这个每页只显示。哎,比如四条记录。什么的。等于一个四。好,然后下边我们来干什么呢?我来获取这个总页数。
17:03
啊获取总页数,这个总页数该怎么计算呢?总计数数淘的克的有了。如果是这样子的话,最好把那一个总数设为后天。哪个就是那个总记录数设为负的64。因为等一下你要调用一个ma函数,那个函数返回是。想。不用强转的。你等下就知道了。嗯。这个啊,现在这个呃,Page size,我们刚刚说了这个总页数啊total page number是不是要通过这个总记录数和page size计算得到,对吧,计算得到,那这样啊,我这样我我把这个配奇size。不用这样写,直接这样写不就得了?
18:01
对冒号,诶还得是。等于一个四。好啊,我这个现在size的是四,也就是总这个每页显示的条数啊,每页显示四条记录,那现在获取这个总页数该怎么办?总因数该怎么得呀?总计数除以那就可以size嘛,但是你这样子的话,你就很很。就是因为你这个过程当中,你的想做很多。所以你要把前面设置这个等一会儿啊,我看一下用不用用不用跳转啊,设置一个变量解说什么呢。总页数来啊,比如一个叫涛。Page number。好,哎,那下面呢,我们来对它进行赋值,这个时候是不是需要判断了。
19:00
Record。如果,我是不是能磨它?我是不是得,如果能除尽的话,我是不是取它的这个商,除不尽的话,是不是要加一啊。对吧。这个能看懂吧,我这个刚刚说了啊,假设我有40条记录,每页显示四,40除以四能重进,是不是页数是十。是不是它的商。对吧,那如果是41条记录。除不尽是不是商再加一。所以呢,这块我是不是得判断,如果它,哎,除以它什么呢,等等于。零。哎,那这个时候这个total通number。是不是就是这个等于我这个,呃,To克的除以我的这个配。对吧,来page number。
20:02
就等于什么呢,Total。除以我的page size page size,哎,就是这个,那else。是不是等于它。再加一。这个。Int。那我把这个也整成。对,都整成64。这个下边这个这能看懂吗。可以吧,哎,因为它摩它有是它除它如果能除尽的话,哎能除尽的话,我肯定就是取它的商,哎如果除不尽的话,哎我这个肯定要在这个商基础上再加一,哎就刚刚举那个例子啊,40哎能除尽,哎十页41除不尽,还还有一条怎么办?我还得再有一页,再有一页显示它,所以啊这这块啊,这这块这个page这个size,还有这个呃page number啊这个total page number,它这个计算这块需要这个写一个判断啊,需要写一个判断,好啊,那这个page size,嗯,有了这个逃头追客的总记录数有了,总页数也有了这个,诶下面呢,哎,我们就得这个看一下当前页里边到底那个切片里边有几条数据了。
21:40
我得得到喷一里边那个,呃,有。几本图书了啊,几本图书了,所以呢,下面来获取当前这个页中的这个图书,哎,所以啊,这个得获取一下,同样啊这块呢,我们还得整一个这个四扣了。二。
22:02
好,那这块呢,我们就得查询了,查询呢,我们找到我们这个。呃,上边这个啊,获取所有图数,这个我们把在它的基础上呢,来加一个limit就可以了,Select from books c c。回来。CTRLV好,后边是不是加limit。问号。逗号问号。诶这个能看懂吗?不是分页了吗?诶加个limit米,它不就分页了吗?哎,分页了好诶那一摞它之后呢,诶下边,哎,我们来这个执行。Us点一个DB,点一个query。好,Circle。二。好,这两个问号,这两个问号。值应该是什么?哎,刚刚我们推出来了。括号。
23:00
Page number减一乘以。Page size,这是第一个,第二个page size,哎page size好,哎就是这个,哎占位符啊占位符哎填充的时候,哎,刚刚我们这个推的啊,刚刚我们推的好,哎来我们这一块呢,解说一下。这咋了?A number。啊,得转一下是吗。对,我这块还得转成这个。在这转啊。
24:01
杨页码。转换为这个INT64。来一个I number。就等于。这个叫个那个报名。String。看water。点一个pass it。好,第一个呢,就是这个page number。然后呢,第二个是禁止。第三个是。这个应该是。64是吧。64。保存。好,来啊,这块叫I page number。
25:01
Number。飞机。对,少了一个122。不要了啊。嗯。好啊,就是这个,嗯,这个下面呢,我们来。负循环。Rose。点一个next。好,哎,在里边呢,我们该对这个,嗯。创建一个。Book。点一个book。好,然后下面,嗯,用这个Rose。加了一个盖。
26:01
第一个。Book点一个。ID。Model。你少个L。第二个。Book点一个。Title第三个,Book点一个。第四个。Book点一个。F。第五个。点一个sales。第六个。点一个to。最后一个。点一个pass。好,就是这个,嗯,把这个呢,哎,Book我看一下啊,ID书名,作者,价格,销量,库存,还有图书的封面,好啊没问题,诶没问题,然后呢,我们需要来这个有一个切片啊,有一个切片。
27:02
这样一个布克斯。来一个,嗯,这个。中国号行。Model点一个。好。这怎么了又?Model。嗯。来啊,这个下面呢,哎,我们来往切片里边将这个book添加到切片中。添加到box,好,哎,来。等于。逗号。好,就是这个啊,就是这个,那这个经过这个four之后呢,我们就把当前页里边所有的图书给查出来了,哎,比如这个,哎,第一本第二本,第三本,第四本,然后呢,放到这个books里边了,哎放到books里边之后呢,诶下面。
28:11
哎,我这个是不是得有一个配进来呀,上面这些信息是不是都准备好了呀。哎,对吧,哎都准备好了,所以呢,哎,下面M就在这个来创建这个配置了。来K等于。Model。点了一个head,好,里边第一个。第一个是啥呀。Books吧,哎,Box,嗯,Box好,哎,第二个page the number,哎,Page number就是我们这个当前页,当前页是我们的I。Page number,好,第三个page size是我们的这个page size。
29:03
第四个还有你头头。To page number。Total page number,第五个total,总计录数total。Record总记录数尾号保存好,就是这个啊。全部提一个。那我写的不是切片啊。啊。切片啊切片,来我们的book handler book Du Du,好啊,这是这个配有了之后呢,来return page。牛保存好,哎,这是我们这个,呃,获取带分页的一个图书信息啊,图书信息这块这个。什么没用啊?
30:01
哎,好,哎。上面这个异常error这块好像没有写是吧。Inside。If。保存。好好了啊,这是我们这一个,呃,实现分页的一个函数,我们写完了,好,那下面呢,我们来测一下啊,测一下看能不能得到我们想要的信息,所以呢,来测get page books,看有没有问题啊,找到我们那个u do test。那在这块呢,在最后了啊,我们来测试一下test一个get page box,好T。Testing。Testing第一个T。好,测试它,哎,我们来这个得到一个配。
31:01
逗号。等于。do.get一个page。没有提示。嘿,Books。括号里边串一个页码,比如呢,我们来去第一页,第一页写个注释。嗯。不用写呀,CTRLC来找到我们这个。Textbook这个函数啊,好。复制一个主调。错了。主调,哎,测试什么呢?带分页的。好,改一下。CRV好,Test一个get pages好,那现在哎,得到这个。T。
32:07
这又怎么了?这是。啊,少了一个,少了一个星座。好啊,得到配奇之后呢,下面我们来这个把一个一个的数据呢,都得一下啊,都得一下,比如这个fmt点一个来。什么什么的,哎,当前夜市。好,诶,逗号。Page点一个page number,好,这是当前页,好我们这个把这个什么的总页数啊,总计数数呢,都获取一下,总页数是。总页数是,这是配给点一个total。看看都有没有值啊,Page number,好,再往下总记录数式。
33:00
总记住数是配件一个total record。好,哎,然后最后一个就是当前页里边这个图书有。好哎,这是一个配置点一个就得便秘了啊,这个呢就写给它了啊,就写给它了哎,图出油下面呢,我们的润这个里边的这个切片了,对吧,好啊,来这个four。一个K。一个V。等于。我们的这个page点一个box,诶对吧,哎,便利它啊,便利它好在这里边呢,Fmt点一个print f。好,写一个,哎,第一本读书。
34:01
不不不,这样来了啊,这些都可以不要了啊,直接让他显示吧,费劲啊。嗯。一个。第一个来好。图书有。好,诶,逗号。啊,逗号是中文的是吧。逗号八三。好了啊,写完了,那下面呢,我们就来测一下啊,看有没有问题,我们传的页码是第一页,第一页呢,我们刚刚已经查过了,第一页是1231234。好,1234来看一下是不是这四本图书。哦,哪有错呀?怎么红了?
35:00
哪一块红呢?DNA。Sao xion。DAO啊,我这我这。我这写多写了一个do。保存。好,哎,没问题了啊,没问题了,来啊,我们来测试一下,看这里边是不是就测一个它啊,我们这个组的。主的测试方法。Text book,好啊,里边。测试带飞儿的图书,好,来在这右键。来go test看一下,看看我们写的有没有问题啊。报错了,来看一下啊。哪一块报错了?
36:03
谁没复制?的。四条没有赋值吗?四条。没有副职。哦,这个呀。我直接写他等于四。等于四啊好啊,这这块忘给值了是吧,因为我记得我刚刚写值了。啊对,我我之前写的是page size冒号等于四是吧,后来又改成改成这个word page size64,没有没有赋值啊来来啊,再来一次。
37:09
I go test。好诶,来看啊当前页哎,第一页总页数九,来算一下啊,每页显示四条总计数数是33,给我们查的没问题对吧?给我们查的啊,没问题啊,33除以九除以四四八三十二。对不对呀,对吧。因为这个除不尽吗?四八三十二,还有还有一条啊,还有一条是不是得九页啊,哎,得九页啊没问题啊,当前页是一,总页数九啊,总计数数33,好,当前页中的读数有啊1234前四本前四本啊没问题,跟我们的一样啊好来看第二页,来把这个改一下。我们的测测试测试。我们看最后一页吧,啊,看是不是一条。
38:02
最后一页是第九页,第九页好,保存一下来再来go test。一条吧,诶好啊,没问题啊,没问题,哎,这个没问题。你当时这个当前页。怎么是一啊?配一点配音,Number。不是设置了吗?所以啊,这块有问题啊,这块有问题当前页。配机眼配奇number,我传过来的是。酒啊。Number是九,那是转成I page number,我这块复制的是。没问题啊。
39:00
哦,看错了啊,看成看成上一个了,对吧,看成上一个测试了啊,就没问题啊,是九是九,看成这个我们上一个测试了,哎,没问题啊,当前也是九二十九好啊,这是我们这个啊,这个写的这个配置结构,以及写的这个获取带分的一个方法,我们也测过了,哎,没问题啊,没问题好啊,下课休息一下。嗯。
我来说两句