00:00
各位同学大家好,刚才呢,咱们完成了用户模块的需求分析,那下面呢,我们开始开发相关的接口,开发接口之前,首先我们做一下准备工作,把用户模块的相关类我们进行创建,包括controller service map以及实体类,实体类呢我们在model中已经提前导入过了,那我们来看一下啊,在model里边我们找到。在STEM中有一个叫system user,里边有相关的试体类,这个已经存在了,那下面呢,咱们把其他的类进行创建,这个创建过程中呢,我们这么来做,大家知道啊,咱们最早学的这个框架叫my plus,在my plus里边有一个内容叫代码生成器,所以咱们现在通过MP的代码生成器来生成一下相关代码,那咱们看怎么来做啊,这过程很简单啊,大家看我的资料里边的第六个叫代码生成器,我们的做法就是第一步在项目中引入相关的依赖,然后直接用这个工具类进行生成,这个类也不是我写的,是我从它的官方直接复制,改成了我们实际的效果,那下面咱们来做一下操作。
01:17
首先啊,咱们来到我们的项目中,这个我先关掉。然后项目中呢,我就把这个代码生成啊,放到我们的service去,你放到也可以,我就放到service,然后在里边第一部分咱们先引入相关的依赖,这个依赖我从资料中直接复制一下,就是里边的这两个依赖。然后把它直接复制啊,这是我从官网上直接复制下来的,咱们放到这个位置,这是第一部分引入依赖。等它刷新加载完成,第一次引入它会联网下载,各位需要多等一会儿,然后这个之后呢,因为它是一个工具,所以我们就在test里边,我们写上这么一个相关的工具类啊,咱们。
02:06
创建一个新的这么一个包,这个包我就叫这个。然后code里边把我资料中这个类,咱们给它直接复制过来。拿到这里。进行复制,复制之后我们看一下里面的内容是什么,然后咱们进行修改,最终用这个工具类生成相关代码,大家看一下啊,首先第一部分是一些全局的配置,然后这配置什么意思呢?咱们看第一部分。大家看啊,这什么意思?Output是不是输出的径,也就是说你这个代码最终要在哪个目录或者说哪个文件夹中进行输出,这里写上文件夹的路径,但是那个路径呢,有很多种写法,有些同学基于它的系统等原因,如果按照他官方的那种写法可能找不到,所以我这里边建议各位写他的带盘符的绝对路径,这么写绝对都可以找到,而我当前这个是在这个下,我们查一下啊,C user adminator这个面,然后加上硅谷OA,谷OA parent,它的下面有一个service OA,然后你看里边啊。
03:27
Java是不是放到咱们的这个位置啊,所以这我们就是写的一个径,注意啊,你复制的时候,你的路径跟我的肯定是不一样的,你要改成你的径,这个不要写错,这是我们写的第一部分,然后再来看啊,其实这些部分不是很重要,咱们也介绍一下看。第二个叫。这什么意思呢?强调如果说你不写这句话,它生成代码的时候是这么一个规则,在前面会多个字母I,比如说你叫user。
04:05
它会这么来写,就是多一个字母,哎,第一个字母如果加上这行之后,它生成的这个类里名字里边就没有这个字母啊,这是第二个,然后再来看是代码中加上注释中那个作者,包括有一个叫open等于什么意思,如果这个值等于你生成代码之后,代码就是这个样子。都给它打开了,如果false它就是这个样子没有打开啊,这是一些配置,主要是你的路径不要写错,然后之后再来看下一部分呢,写上你这个数据库的部分,因为它要根据数据库的表生成情况,代码注意第一个你的地址不要写错,这是我的地址,应该是正确的,你加上你的值。然后这是驱动名称,用户名,密码,包括数据库密码,改成你的密码,你可能是123456,或者可能是别的纸啊,我这里是root,为了操作方便,下面是我们的包,然后这个包里边特别说明啊,这么一个结构。
05:05
我保持一致看啊,点at上部分,然后有啊,这是我们那个部跟保持一致是在里生,然后之后呢下有一些相关的策略,有些策略咱可能暂时用不到,这里也说一下啊,首先。这个很重要,指定你到表的名字上面数据这里是表,因为要根据表生成,我这个表的名字叫system user,这要写对,然后下面是一些其他规则,比如说什么规则呢?比如说我们生成类的时候啊,咱们介绍一下,但是类其实我们已经统一导入了,假如说咱们看表里边的字段,咱们找到啊,大家看,比如说字段中的,呃,这个字段叫hi的下划线ul,它在生成的时候会把下划线去掉,把第二个单词首字母变成大写,就这种规则啊,它里边都有些规则,但是咱们可能暂时没用到,因为咱们已经提前导入了试体类,这里都给它加上啊,之后我们执行就可以了。
06:16
那现在这个改完之后,下面咱们执行看效果,注意啊,各位生成的时候,如果你发现这里边没有代码,那你就检查一下路径是否写错了,或者这个包的名字是否写错了啊,这个都去检查一下,我这个应该是正确的,那我现在执行一下,咱们看一下效果,就是个问方法直接执行。等它执行出来啊。执行之后,我们到这里边可以具体看一下这个内容。大家看提示,我们是文件生成完成就成功了,然后到里边咱们看一下啊,大家看它生成的代码的特点,第一个。看到它了吗?是不是CTRL了啊,当然这些咱们后面再改它把基本结构有,然后再看第二个。
07:05
有什么是service,包括按照MP的规则。这些是不是都生成了?然后之后再来看有什么,是不是有map,然后你发现啊,它map中给咱们还生成一个对应的插班的文件,这些都有了,除此之外还多了一个实体类啊,但是实体类呢,咱们目前就不用这个了,用model中统一的,所以我现在把实体类就去掉了啊,不去掉也可以,但是咱们统一已经放到了model中,这个我给它删掉。那你看到啊,代码都生成了,去掉之后咱需要改一下啊,在这个里边把类这个改成咱们model中这个包,因为它用的还是之前生成那个。这个给他改一下啊。直接我给他引入。然后改完之后把里面那个包给它也是改一下,改成咱们model中的user试体类。
08:04
这个也是改一下。改完之后,现在咱们的代码用MP的代码生成器我们就完成了,这是我们生成器的使用啊,当然你不用也可以自己创业,其实也并不是很麻烦,就是用它为了演示一下代码生成器的使用,然后完成之后,我们在CTRL里边开始编写它相关的接口,首先第一个啊,这个路径我们先改一下,我就改成跟我课件中的名字保持一致,咱们还是叫这个名字。In system user写完之后,在CTRL里边我们注入service。咱们进行注入。System user。Service注入进来,注入之后我们来编写它的增删改查的相关的接口,那咱们啊快速来写一下啊,跟之前的角色基本上是差不多的,只改成了我们的用户,但是写的咱们也给各位再写一遍啊第一个。
09:09
用户的条件。分页查询,我们写到这里啊,首先加上。或者。注解加上一个中文提示,用户条件分页查询。然后这个查询我们写一个提交方式啊,咱就来一个get提交,加上我们的路径啊,这些路径中呢,因为咱们做条件分析查询要传入当前页,我加个配置,又加上每页的记数,我们加个可以了,下面加上public。统一反应结果,我们起个名字就叫index。最终我先允那个值先不让他报错,一会咱再完善点上一个,OK。现在啊,基本方法完成条件分析查询完成之后,在里边首先第一部分得到你传过来的当前页和每计数数,以及你的条件的对象,咱们写一下啊,加上注解。
10:14
PASS1复制。加上一个叫利米每记录数。除此之外,我有一个条件的对象,这个条件对象我们已经写好了,它叫system。Query们的对象咱们看一下啊,条件里呢,比如有这个键一就是名称,有你的开始接入时间,比是咱们查询这个用户啊,是这个2011年到2012年,或者2021年到2022年等等,有一个开始和结束时间,根据它我们可以做个查询。这个啊,写一个条件,然后条件写完之后,下面开始写分页。
11:02
这各位应该记得啊,咱们在角色中应该刚写过不久,如果你没有记住,我这里各位再写一遍第一部分。创建一个。配置对象,然后第二步我们封装条件啊,就是判断条件值不为空井封装,第三步调用MP中的方法实现条件分页查询,这是一个基本步骤。那我们写一下啊,第一步我加个配置。加上犯刑。System,然后起个名字。等于new上一个配置传入当前页和每页记住数,这是第一步,然后第二步呢,咱们来封装条件,我们加上一个叫LA的块rapper啊,当然之前讲过你也可以就用块rap都可以用,这个的好处就是可以防止你的字段名称写错。
12:06
加上你的,然后咱们个等一个在里边我们进行判断,判断的时候呢,比如说咱们现在啊,咱就判断这么三个了,一个关键字其实就是我们的用户名称,然后开始就是时间,咱要大于等于开始时间,小于等于结束时间,根据它进行操作,那咱来判断啊。首先我们在里边啊,这里边有个VO对象,咱这么来做啊,我们从里边获取。条件给它取一下啊,第一个就是keyword,让他作为我们那个就是名称啊,我们就叫U3。因为他操作,然后再来取,通过V取到它这个。开始时间。然后再取一个它的结束时间。
13:02
我们取一下啊呃,这个时间结束时间。现在条件直落得到了,得到之后咱们下一步操作。判断条件值是否等于空,如果不等于空,那咱们封装条件,我们一个一个进行判断啊,首先第一个。加上润点is empty username。如果这个值它。不等于空,那咱们进行封装,用rapper点这个加个like,就是某某查询了啊,然后在里面用这个。System user。加上我们里边的这个,呃,就是应该是username啊,还是name,我们看一下这里啊,应该叫name。就根据他我们做个查询。呃,看一下里边这个字段。咱就根据这个吧,根据这个u name进行查询。
14:00
写一下啊。根据它。然后后面加上name,这是第一个条件,然后之后条件判断跟他应该是一样的啊,我就复制改一下第二个咱们。看它的开始时间不等于空,不等于空的话,那咱们叫大于等于开始时间怎么做呢?有一个方法叫GE于时。注意不要写错啊。就是根据这个时间我们判断。大于等于这个时间,小于等于这个时间就是根据它的范围操作克里time。这个解到的,然后下一个是结束时间,咱们要小于等于结束时间。这里加上啊。这个and。结束时间,然后小于等于用的方法叫L啊,LT是小于,L是小于等于,这各位要记住啊,我这里加个注释。
15:05
Like代表。模糊查询。然后里边这个表。大于等于。G大于等于,Le代表小于等于,这各位要明确啊,然后这个条件封装之后,我们最后一步调用service中的方法,咱们进行最终的实现。我们调一下啊。Service里边。啊,这个有一个分页的方法,它就叫配置,第一个传入咱们new的那个对象,第二个传入条件最终返回就是配置对象,啊,咱们之前说过还是用它那个接口,我们起个名字叫配置model。所以现在啊,这部分就完成了,在配置model里边呢,有分页中的所有数据啊,所以咱把它直接做个。
16:08
以上就是我们实现的用户的条件分页查询,这个我们就最终做到了啊,所以大家把这个给他要能准确的写出来。这咱们就讲到这里,然后这个之后在用户里边还有它的增加,修改、删除等方法,这个我就从课件中咱直接拿过来了,然后咱们详细看一遍啊,因为跟之前的角色应该说基本上是一致的,就这几个方法咱们拿过来,我们详细来看一遍啊,这个我就不再从另去写了,因为之前已经写过了。那大家看到啊,咱一个一个来看啊,第一个是根据ID查询用户,咱们得到路径中的ID,然后调用serve中的方法,根据ID得到对象,把它返回,这是我们写的这个方法,然后之后就是添加用户,添加用户的时候呢,我们起个名字叫save,通过request body,就是Jason格式传递封装调方法做一个保存。
17:09
然后这里边还有一个修改或者说更新,我们用到put提交啊,用块的body传递最终做到,然后各位注意啊,如果你用的是蕊块的包底,那你不能用钙的提交,因为钙的提交里边没有请求体啊,你不能用它,用它的话这值永远等于空。之后就是删除,根据ID删除,用delete,最后调方法我们进行删除。所以大家看到啊,以上咱们就把这个用户的增删改查接口,我们就最终都完成了,所以各位把这个可以参考之前咱们写的角色能快速完成出来。
我来说两句