00:01
各位同学大家好,下面呢,我们继续来完成根据用户ID查找菜单权限数据的方法,刚才呢,Service部分我们经完成了,根据管理员和非管理员进行判断,然后查询不同数据,那最后呢,我们来编写map,根据用户ID查询数据。map里边这个方法我们已经进行了创建,然后这个方法按照咱之前说到的map中用到是my be,先写interface接口,再找到它的叉文件,这个文件我们之前已经写过了,咱们找到在我的resources的map里边打开这个map,现在准备工作都做好,然后做好之后,为了咱一会儿取值方便,我在map的这个方法中加上一个注解叫P,然后给参数起个名字叫user ID,为了咱取值方便,然后完成之后来到map中,Map里边首先我们检查一下啊,这个map路径,看它是否正确。
01:01
嗯。就是你这么来做,点中CTRL键,如果能点进去就对了,点不进去肯定就不正确,咱目前是正确的,正确之后在里边写内容,首先第一个我们来一个result map,加上它这个自定义返回结果,因为是菜单部分嘛,我们给它起个名字。System map。里边呢,加上它这个包类路径就是这个。我把这个复制过来。放到这里,然后最后加个属性,凹凸mapping处自动映射。现在这个自定义结果就完成,完成之后呢,我们继续来看啊,下面我们来开始编写circle语句。这个我加上一个注释。也就是这句话。根据UID查询菜单的确数据。那这个写个结构。
02:01
Select里边ID中加什么,这各位应该清楚啊,加上是咱们的方法名称,这个拿过来。然后里边有一个叫result map,加上刚才这个map的ID值,现在这个结构我们就完成。完成之后呢,在里边我们开始写语句,这个语句呢,我们这么来做。咱们先在这个circle样里边把它先写出来,然后咱再复制过来,防止我写错,因为你直接写你无法验证是否正确,所以我现在四样里边先完成,最终我再进行复制。那下面咱们开始写色构语句。我们打开SQ样,然后在里边我们先做个列举,因为咱目前查询的是多张表查询,那咱看一下啊,第一张表肯定有我们的用户表。写到这里,然后第二张表呢,是用户角色关系表,因为你要根据用户得到角色才有菜单,第三个表,那就是角色菜单的关系表。
03:05
另外呢,注意啊,因为最终咱要得到的是不是菜单数据啊,所以肯定还有这个菜单表。具体说啊,咱的表里边应该是有四张表得到数据,咱们这四张表要做一个关联,这张图里边我再补充一下啊,就最后应该还有这么一张表。菜单表就是四张表,查询前三张表能得到菜单ID,最后一张表得到菜单中的具体内容。这个啊,是咱们做一个说明,然后下面呢,我们开始编写circle语句,我在里边写一下。我来个,呃,为了方便,我先来个号,咱一会儿再改,然后加上from,咱们加第一个表就加这个菜单表。这个加过来。我给它起个别名就叫M,然后菜单表是不是要进行关联呀,那怎么关联呢?咱们看这关系啊,首先。我最终查的肯定是菜单,但是根据什么查是不是用户ID,所以做法就是菜单要跟用户表关联,中间是不是要经过这两张表是不是才能关联到,根据它能做到,然后这里边我们最终做一下啊,其实过程中呢,如果咱真正查的话,这张表应该说用不到,因为咱们并不想得到用户信息,只需要用户ID,而我在这个用户角色关系表中是不是就会包含用户ID,所以咱们其实这三张表就可以了。
04:33
如果说还想再得到用户信息,那再需要这张表,这个位明确,就根据你实际选取几张表,但是无外乎就是咱这张表的各种操作,那咱们啊给它写一下第一个就是菜单表,那咱们做一个关联,关联的话呢,我就加一个inner join,就是内链接,咱们先关联这个表,就是角色菜单这个关系表。把这个关联咱们给他起个别名,我叫这个RM啊,角色菜单加上关联条件,什么条件呢?就是菜单里边这个咱们看一下啊,应该是里边的ID,等于角色菜单里边那个叫menu ID,咱们看表里边啊。
05:18
菜单中。是有这个ID,然后这里。这位置是不是有这个me ID跟它做一个关联,这是第一个条件,然后关联之后我们继续关联in the Joy,咱们关联这个表,用户角色关系表。我们给它起个名字叫UR,然后加上关联条件,那这怎么关联,各位注意啊。菜单跟他没关系,但是这两表是不是有关系,那咱怎么做,我们做好就是是不是用角色ID进行关联,那咱写一下啊,就是RM点肉ID等于UR点肉ID,这是我们的第二关联,然后关联之后最后加上我们这个条件,它的条件就是里边那个用户IDUR里边那个user ID。
06:09
这个等于咱们一个值,我先用个问号替代,比如咱再改,然后加上之后,当然后面还有其他的,比如说你当前这个状态是可用啊,包括它是没有删除的等等,这一部分我就从课件中复制一下啊,就是这些你看啊,我菜单可用,然后它没有被删除,因为咱们做的是逻辑删除。这个拿过来,所以以上啊,就是咱们加上的这么一些基本条件,最终构成了我们这个语句,这个完成完成之后呢,看第一部分啊,这里边我们不要写星号,加上你的具体字段,然后具体字段应该是在我的这个位置,就是菜单里边的数据啊,咱们把这个都给他拿过来。就是放到这里。这些字段啊,有很多,我给它换成多行,欢迎咱们来查看。
07:01
这些啊,然后这里边它可能会有重复,咱加一个去虫的关键字。Distinct去重现在完成,完成之后我们来简单试一下啊,比如说现在啊,这个用户咱们找一个有角色有菜单这个用户啊,先找一下啊。首先我们看。菜单里面这些都是一的,有一个角色是这个二这个啊,然后二的这个用户应该是这个,就是那个用户ID,咱们做一个查询试一下啊。就是这个。现在把这个语句执行,看结果。大家看啊,是不是查到了行为内容,所以证明这个语句应该就正确了。说啊里面这个关系各位同学必须要弄清楚啊,给大家再重复一遍啊,咱的做法就是根据用户ID要得到菜单,而这里边主要涉及到有四张表,具体说是这三张表操作,因为咱们不需要用户信息,所以不需要这个用户表,那怎么做呢?首先菜单表跟菜单角色关系表关联,用菜ID关联,然后关联之后得到你的角色ID,用角色ID跟这个关系表关联,最终有用户ID跟用户ID进行查询,所以咱们最终具体说按照我们这个效果是有三张表查询,如果说你想再得到用户信息,需要再管理一张表,然后最终加上条件,这就可以了。以上就是一个SQ语句。
08:35
语句完成之后,我把这个复制到咱的这个代码中来,咱们看一下啊这个部分。直接复制过来。然后复制之后呢,这个位置呢,要改成我们的用户ID,也就是从这里边传过来这个ID,那咱给它取一下啊,加上井号用快递就是通过这个站略服务方式取到,注意我们买配中基础中应该讲过,这里各位要特别清楚,所以以上这个circle语句就完成了,也就说咱们到这里把咱们的第一部分做到了根据用坏递来查找菜单的圈数据,这个过程大家要熟练,给各位再重复一遍啊,然后咱再写下一部分。
09:19
咱们直接看核心部分啊,就在我们的这个位置。我们的做法就是根据这个。用快递做判断,如果他是超级管理员查全部,如果不是的话,那咱们根据这个查询,在查询过程中我们编写map,编写思语句,最终进行实现,另外数据构建成路由要求的格式进行返回,所以这个我们就讲到这里。
我来说两句