00:00
好,那么继续编写我们的CD功能,前面我们测试了使用user member可以去数据库中查到数据,那有些同学呢,就有一个疑问,这个user member这个东西呢,它继承了我们的my base plus规定的base member,然后呢要操作user对象,但他他怎么是知道user对象要跟数据库中哪张表要进行对应的,其实呢,有一个默认规则,就是user对象这个类名呢叫user,它自己呢就会默认去数据库中找这个user表,但是呢,如果哪一天你的这个表名变了变,比如我们变成了user t BL,叫user table,我们就叫user t BL这个表名,如果你再变成了这个表名,你现在呢,想要操作,那就不能操作了,那我们就需要使用mys plus的一个注解叫table name,我们呢,实际的给它指定表明是哪个就行了,所以呢,大家注意这个默认的潜规则就行,那再接下来我们来编写我们的c rud,那回到我们的c rud,我们现在呢,需要发送一个打。
01:00
Table请求最终呢来到这个table页,而table页里边的所有用户数据应该都是我们查出来的,所以我们自然而然我们应该是CTR了,调用service service再来调用member,而这个member里边呢,所有的增产改查方法又都有的,那我们这个service呢又写的不规范,其实按照正常方式,我们应该是先有接口在有实现类,我们注入接口来编写的,所以呢,我们只常规的方式应该是这样,我们写一个user service,我们先得有一个user service的接口,然后呢,我们再来写一个实现类employment,再来有一个user service的实现类,User service的实现类,然后呢,这个实现类来实现user service接口,User service接口,然后这个实现类呢,我们注入到容器中,我们以后呢是用这个实现类的,这两呢不规范,大家可以改一下,都变为接口加实现类的方式,那我们就顺便改一下吧,我们假设把这两个挪进去。
02:00
然后呢,我们把这两个呢,把这些我们都认为它是实现类implement,好,我们直接让它重命名文件名,然后呢,这一块也一样,我们认为呢,它是一个实现类,让它重命名文件名,然后呢,每一个实现类呢,自然都有相应的这个接口,先来准备一个city service的接口。好,然后呢,再来加上一个,比如我们的account service的接口,呃,我们来创建一个这个接口文件,然后呢,我们这些account service的实现类,它来实现account service接口啊,Account service的这个接口,这个接口拿来,然后呢,包括我们c service的实现类,它呢是来实现c service这个接口的,然后呢,我们这些方法呢,其实应该是在接口里边规定的,来到c service里边,在接口里边规定这些方法,嗯,我们把这些方法呢实现去掉,我们只需要规定这个方法就行了,然后呢,我们实现类里边自然来实现这个方法,包括account service也一样,它这个方法呢,应该是接口里边规定的,这其实是我们来正常来开发业务逻辑的时候,我们先有service接口再有。
03:25
Service的实现类,然后呢,我们以后要用service业务逻辑组件,我们是应该给容器中,比如我们以前用的这些,应该是给容器中注入的是service的接口,而不是以前的实现类,把这些service的接口拿过来,所以呢,自然而然我们的这个table controltrler也是一样的效果,那我们以前的这些实现类就没有了,那来到我们的table controltr了,那我们想要查出所有的数据在我们这张表里边展示,那么就只需要注入我们的user service就行了,User service at一个auto where好,我们来把这个user service拿来,那就应该是我们user service。假设呢,我们有一个查询所有的方法,然后呢,在user service的实现类里边再来调用我们user map来查询所有,但是大家会发现因用user map里边增删改查都规定好了,每一次你要呃调、增、删、改、查,还把它再调一遍,很麻烦。所以有了马杯斯plus,不仅能在user map这一层都我们来简化,甚至于你的service层都能简化,怎么讲?
04:25
然后呢,我们可以来看一下在u service这个接口上,你可以先说我的这这个接口继承我们买business plus里边呢一个接口叫I service,这个I service呢是所有service层的总接口,I service里边写一个泛型,这个泛型呢大家看啊,这个I service是一个顶级service接口,这个泛型呢就是我们这个service将要查询哪些数据类型,那么最终呢是查出user这个类型的数据,想要对这个user表进行资产查的,那么这一写I service接口以后来到user service employ,我们user service虽然没规定啥方法,但是I service里边规定了超多的方法,所以你自然而然要来到这,难道你要去实现这么多的方法就很麻烦,所以呢,我们在这一块马plus里边又有一个对我们顶级service接口的一个实现类叫service employment,所以呢,我们在这再来让我们的这个实现类继承service employment这个类就行了。而service。
05:25
Ment里边传两个泛型,第一个是best map,第二个呢是泛型,而这个best map呢,指的就是我们当前的这个service,它呢是要操作哪张表,用哪个map,把这个map呢拿过来,然后呢,包括我们操作表返回到这个数据的类型是user,写到这一写到这以后呢,我们基本上什么方法都不用写,大家看CTRL f12,我们的这个user service employment这个类里边就有非常多的增删改房查方法,比如呢这个方法是统计数量的,然后呢,接下来这块的方法都是查询,各种查询,查询单个的按照ID查询的,然后呢,还有我们来继续往下翻,还有下边list查询好多的,包括呢配置,这是封页的,还有remove,这是移除的,还有save,这是保存的,还有update,这是更新的。所以呢,我们的所有复杂增删改查方法在这里也都有定义,所以对于我们来说,我们以后的controltrl想要查询所有,只需要注入user service user service这个接口有了呢,你想查询所有调用它的list,那我们直接能去数据。
06:25
图中查出所有的user对象,那为了方便我们去页面遍历,我们就直接放到model里边,点and attribute,比如我们这个对象呢,就叫users,我们把这个数据呢全部放进去,那来到我们页面,我们真正的去来展示一下,来到我们的这个页面,这个页面呢是我们的dynamic table,在这个页面呢,这有一个表格,我们最终保留了一个啊,就是这个表格,这个表格里边呢,TR啊,好像挺多的,来ctrl out l,那格式化一下,那么TR呢,也最终只保留一个一一行TR就行了,把这些所有的TR全部删掉走好,那我们表格里边呢,只保留了一行TR,然后呢,接下来我们在这儿就要进行遍历,到底有多少的数据,然后呢,我们这个表格的名字啊,我们表头的这些信息,这就是我们的用户的啊,用户表里边的这些信息,而我们真正要便历的数据,我在TR这TH,我们写一个TH来进行遍历,便历哪些。
07:25
它首先Dollar大括号来取出users,这是我们这是我们这一块controltrler里边,我们给model里边放的一个attribute叫users,所以我们在页面呢取出users,然后呢每一个users就是一个user对象,然后呢,接下来我们这些表格,我们要取出这样的数据,比如用户的ID,然后呢,用户的名字,年龄,Email,还有他要做什么操作,那我们接下来可以来看一下,首先第一个我们可以把这一块的这些内容,我们来就来删掉,只保留一个我们来th test test,那接下来首先第一个是编号ID,这个ID怎么取,因为我们知道便利的时候呢,我们还可以拿一到一个便利的状态,官方文档,在SIM官方文档这一块我们来找啊,这个迭代便利,在便利的时候呢,我们还可以给它添加一个便利状态,便利状态的这个statuss,我们来看一下,就是在这一块我们还可以添加。
08:25
个便利状态,在便利状态里边,其中有当前便利到便利的索引,这是索引,然后呢,当然到底它的数字编号是几,我们还可以取出它的这个count,包括所以呢,我们在这儿可以取出当前表格的这个数字编号,或者呢,我们当前这个user对象的ID也都可以,所以你想取哪个就取哪,比如我们的这个status,比如我们这一块呢,那就是Dollar大括号,我拿出当前便利,现在呢是第几个来可以把它count拿到,然后呢,包括我们当前用户的接下来用户的名是什么?Th test Dollar大括号user,点一个那就有name信息,当然我们前面的这个呢,你不仅可以用count,也可以用它的真正ID,那我们就用一个这个name吧,然后我们可以来专门来准备上一列,这是用户的ID,这是他当前的这个编号啊,我们真正的ID列来放在这儿,那ID。
09:25
低的这个值,那才是我们可以这么来取,Th test Dollar负大括号,那是user的id.D,好,然后呢,这是便利的用户的ID,用户的名字,用户的年龄,Test,那年龄呢是Dollar福大括号,User点一个H,然后呢,包括我们这个表里边用户的这个email,这个email信息我们也可以这种取一下,用行内写法到大括号,然后呢,User点一个email,然后呢,再接下来来到我们这个TT,这还有这个操作,操作我们放下,然后这一块呢,我们就准备好了CTRLF9来看一下现在我们的所有的数据,能不能查到数据库里边的数据,好,我们来到我们的这个请求回车。
10:20
来先访问。当天下午。123456走。好,来看我们的高级表格,诶表格里边的这些所有数据我们就查出来了,而且这是一个倒序查出来的这个数据,然后呢,接下来这也有封页条,但这个分页条呢,他说受一到五这个记录,但呢就想显示两条数据,所以它这一块的分页条,它这一块构建的都是利用它的GS代码做到这个分页,所以就是它这一块动态表格的这一块,我们把这个GS代码,如果我去掉了CTRLF9。它这个封页呢,就没有了,走我们来重新刷新啊,重新刷新好,那我们看到它的这个封页呢,就没有了,所以我们真正的想要分页,我们应该是过数据库的这个分页,那过数据库的分页,我们可以把首先把这个分页条这一块的信息拿来,分页条的整个信息呢,我们审查元素,把它的这个HTM2拿来,这是我们的分页条,然后呢,包括哎,我们整个的这个div,哎,我们发现呢,这有一个div,这是table保,那么整个完整的div都跟封页有关,我们直接copy element,所以呢,我们把封页的所有信息,而且呢,这个封页的信息,这个div是在哪个里边啊,是在我们这个table下边,我们来找table下边,我们表格的这个table下边,在这在下边啊,我们来准备一下我们的这个封件,Ctrl alt l,格式化一下CTRLF9。
11:52
我把我们分页条,我们真正的这个代码拿过来放在这,好我们分页条呢,我们可以把这改一下,改成我们想要的什么收影什么东西,CTRLF为那在这,那么把这一块呢,改成我们想要的文字,这是当前,当前的是第几页,第几页第几页,然后呢,接下来我们可以说总计多少页,总计多少页,然后呢,接下来就是总共有多少条记录,共共这么多条记录条记录CTRLF9把这个分页条拿出来。
12:36
我们来刷新一下,好,我们发现呢,这一块就OK了,但是我们真正的这一块的东西应该是我们从数据库得来的,而且呢,我们现在也不应该是查所有,大家怎么完成分页呢?其实来到controller里边,我们来看,对于封页来说就更简单了,来到我们的controller,因为我们这个user service的这个方法大家来看啊,User service user service方法里边呢,我们这个list是来查所有的,但它的方法直接有一个方法叫配置查出分页数据,所以我们只需要调用这个方法,它呢就能自动查出封页查询数据。
13:13
那调这个方法来看,配置这个方法里边它呢,传可以传两个参数,第一个是我们的配置,第二个叫waper,这个waper呢是我们进行我们这个查询的条件,封装对象,第一个呢是翻页对象,而这个翻页对象呢,它是继承IPA的来看,IPA下边CTRLH就有一个实间类叫配置,所以我们想要分页,只需要给第一个传入一个new配置,传入一个配置对象,配置对象里边的泛型,那就写我们的user,你们想要对user的数据进行分页,而配置里边传什么点进来传第一个是当前页码和每页显示几条记录,假设呢,我们现在所有的这个数据,我们每页就显示两条,那当前页码,那我传一个当前页码,每页呢我显示两条,但是这个当前页码肯定不是我们写死的,应该是我们在这儿点击分页,点击第二页,第三页的时候,它给我们传入了一个页码,比如呢,每次点击页码,你给我传入一个PN等于三,那就是第三页,所以呢,我们可以把当前页码也获取来。
14:14
通过请求参数的方式,Request per,你给呢,给我请求参数会带来一个PN代表页码,如果你没带的话呢,我默认还给你查第一页,然后我们来说一下,这是我们的页码应配的PNPN好,我们把这个页码呢,就拿到默认值,我们来写一个一,所以接下来我们到底当前是第几页,我们要传入我们的PN,我们就构建了一个分页对象,把这个分页对象呢,我们再放到这儿,然后呢,接下来是我们的查询条件,我们现在没有啥查询条件,就直接写一个,那然后呢,它就会给我们返回一个叫配置这个对象,这个配置对象呢,是我们这个分页查询的结果,这个结果里边包含什么呢?我们可以看一下啊,在这个page对象里边呢,包含这些信息,其中第一个叫,比如get pages,这就叫总页码get current,这是当前页码,然后呢,Get。
15:14
Record,这就是我们查出来的所有记录,相当于我们两条有转对象,所以呢,我们应该想要如果去页面获取到完整的分页信息的这一块值,当然第几页,总共多少条记录啊,总计多少页,我们只需要啊把这些信息放到model里边就行了,好,那我现在呢,给model里边不放user了,来重新放来model里边and一个t tribute,我们就来放一个配置对象,这个配置对象呢,我们来放到这,因为配置对象里边呢,包含了所有这个结果里边点进来看一下配置对象有我们这个总数,对吧?还有我们这个每页显示的条数,还有我们查出来的数据列表,当前页是多少,包括呢我们这个,呃,这一块我们看下边,还有我们这个,这这是构造线啊,是否存在上一页,是否存在下一页,包括呢,我们这个总记录数,总页码数,在下边这一块呢都有,所以呢,它会给我们返回非常多的这个数据,所以我们只需要呢,把这些数据都放到我们这个model里边,我去页面就能获取了。
16:14
好,我们现在来到我们的这个页面,来到我们这个页面,我们这一块分页条,我们先来获取这一块,将当前第几页,总计多少页,总共多少条记录,当前第几页,我们可以使用行内写法,双中括号高了福大括号,首先当前第几页呢,我们应该是这样,我们会给这里边放一个配置对象,所以我来刀了,福大括号这一块呢,都关掉。我们来到我们的这个页面,然后呢,我们在这Dollar大call配置对象里边的什么来看啊,配置对象里边当前第几页,它呢有一个属性叫get current,这个呢代表当前页,那么就把这个current属性拿来拿来,哎,他说它代表当前页,当前第几页,然后呢,还有我们这总计多少页。
17:09
来Dollar符打括号,总页码呢,是配置对象里边来看一下page对象里边有一个叫get,诶这个pages pages是什么?我来点进来,它呢是我们当前分页的总页数,所以相当于有一个属性叫pages,那在这再来获取一下,然后呢,再来总计多少条记录,我们也可以获取一下双重括号,好,那这一块呢,行内写法要写双重括号刀了福大括号。我们来写Dollar符大括号是多少条记录呢?我们在这来看一下总计录数,那是我们这个配置对象里边点了一个get,这有一个叫叫总记录数,我们看一下啊,有一个叫total,那就是这个啊,是不是相当于我们数据库中到底有多少条总记录,那在这儿,所以我们就在这呢,一写它就行了,Page点一个哈,好,CTRLF9们让页面呢,重新启动,他们这一块的数据能不能展示出来。
18:22
好,我们还是重新来访问,登录进来,123456走,来到我们这个页面。好,那动态台保页这块呢,说404,那么这个动态台保这个请求404来看控制台。那么404的原因是什么?看一下我们这块有没有报错啊,说我们这个啊being user,说我们这个user对象,诶它说不能序列化,不能什么,然后呢,说明我们这个页面在这一块展示的时候呢,出现问题了,出现问题的原因我们不止在这儿取出封页信息,然后大家接下来,接下来这一块还有一个就是我们在这便利用户的时候,这个用户呢已经不叫users了,因为我们所有的这个数据被放在了这个配置对象里边,而这个配置对象里边我们要获取真正查出数据库的数据,叫records,所以呢有一个属性叫records点进来,那么就应该把这个record去来页面进行编历,所以呢,应该是我们配置对象里边的record来进行遍利,好,我们来CTRLF9。
19:30
好,我们来重新刷新,所以我们一旦重新方法调用,我们来分页查询的时候,那分页查询的这个对象里边给我就包含了所有啊,这一块呢,还是404404,我们来看一下效果啊。我们在这来进行刷新,刷新呢,它给我们在这儿的提示,提示我们直接重启项目吧。
20:05
好,我们来重新启动我们的这个项目,然后我们来重新来进行访问。来登录进来,好登录进来,来访问我们的页面,好我们的这个数据就出来了,然后呢,当前第一页总计零页,总计零条记录,相当于他把这个总页码和总计录数,他给我们获取错误的,那这个错误的这个原因是什么?这我们的整个分页功能还要结合马贝蒂斯plus,它这一块呢,专门会有一个东西叫分页插件。我们来看一下啊,My business plus在这一块我们的分页插件,我们必须呢配上分页插件才可以使用,那下一节课我们来配上它就行了。
我来说两句