00:00
好OK,那我们刚才呢,咱们是把第四种情况。咱们也讲了一下,那剩下的一种情况呢,大家来看就是咱们的第五种情况了,那第五种情况呢,大家注意它能够适用的场景啊,非常的多,比如说咱们的第一种情况我可以用,第二种情况咱们也可以用,那第第五种情况到底是干什么的呢?大家注意啊,第五种情况其实叫做命名参数,它主要指的是一个注解啊,主要来指的是一个注解,就比如说呀,我们当前咱们的第二种情况的时候呢,然后大家都知道它会就是我们的my be会自动将咱们的这多个数据是不是放在我们的一个map集合里面,对不对,然后第三种情况的时候,那我们是不是就手动把它放在map集合中了,是不是啊,第二种情况的时候,我们要以my be为我们提供的方式来访问,而第三种情况我们需要手动把它放在map中,对吧?一个呢,不符合咱们的规则,一个呢,写的比较麻烦那。
01:04
所以说咱们就有了第五种情况,我们可以干什么?可以通过一个a per注解来命名参数,也就是说当我们通过这个注解来标识了这个参数之后,My be仍然会把它放在咱们的map集合中,但是呢,咱们map集合中的这个键呢,然后就是我们a per这个注解的值,所以说它叫做命名参数,也就是说我们当前可以来自定义我们买be用map集合来存储这个参数的键了,这个大家注意来,所以说第五种情况叫什么叫做命名。参数啊,然后使用什么注解来命名参数呢?来使用我们的a para这个注解,然后来命名参数,好比如说大家看啊,咱们还是登录功能啊,星星回车对吧,然后我们现在咱们的方法的返回值仍然是个U啊来验证登录,然后括号,然后咱们什么为参数啊,使用咱们的a pair注解啊,行,大家来看返回值是user,然后咱们就叫做切login by。
02:23
叫做check login,然后by pair括号OK,大家来看怎么写呢?我们在这咱们是不是应该有一个string类型的username呀?咱们是不是还应该有一个string类型的password对不对?那这个时候大家来看,那我们是不是就可以在这前面加上一个a para叫啥呢?就叫username,然后这个叫什么,就叫做password OK。就这样就可以好,然后这个时候是什么意思呢?大家注意,当我们在map口方法的参数上加上了a per这个注解之后,然后my be呢,就会将这些参数放在哪啊,放在我们的map集合里面,以a per这个注解的值为键,以参数为止,然后呢,它当然呢,它还会以他自己的方式,然后为以它自己的方式来设置这个键,并且来存储咱们的参数,当然这个咱们一会儿再看啊,好,那所以说这个不就相当于什么,不就相当于咱们的第二种情况和第三种情况的结合嘛,My be会自动把数据放在map中,而且我们还可以自己来设置我们存储这个数据的键,大家说是不是。
03:41
对吧,好啊行,然后咱们来一个CTRLC啊,然后把它放到咱们的映射文件中,对吧,然后首先呢,Select ID要跟方法名一致。然后咱们查询的结果呢,还是一个用户对象对吧?然后其实这个大家直接把这个SQ语句复制过来就行,为啥呢?因为咱们说了嘛,My be会自动把这些数据放在映射,放在map集合里面,以咱们当前这个注解的值为键,以参数为持,那所以说我们现在咱们要想来访问username,那不就是以username的键username来访问吗?如果你要访问密码,那不就是以我们密码的键,也就是a per注解的值来进行访问,对不对啊,这个大家注意啊,好,然后下面呢,我们就可以来进行一个简单的测试,大家来看啊,来咱们把这个复制一下啊。
04:36
啊,或者说这个复制一下来control c,然后放到我们当前的测试类中,大家看这个叫做test check logging,然后by para OK,好,然后在这大家来看一下啊,咱们所调用的方法是不是应该也是呀,叫做by per。行,就这样就可以了,对吧,因为我们现在咱们并不是操作咱们的参数,而是操作咱们map接口中方法的参数,来给它加上了一个注解,对不对,好啊行来大家来看我们现在咱们来一个执行之后大家看一下啊,没有任何问题对吧?没有任何问题啊好,所以说咱们的命名参数其实就是来自定义map集合,自定义咱们当前买be来把这些参数存储到map集合中的键,这个大家注意啊,好,那当然咱们除了这种方式访问还有其他方式吗?
05:33
有没有其他方式呢,你不知道的话。那你就随便写呗。对吧,就写个asda。大家还记不记得,咱们在讲第二种方式的时候,咱们不知道怎么访问,你随便写了一个,他是不是就给你报错了,而且他是不是还给你,他是不是还给我们提示了我们应该用什么,我们可以用什么,大家还记得吧?所以说咱们随便来写一个,那他报错了,他是不是就会给我们说我们应该用什么呀,对不对?来大家看,他说我们的asda它没有找到,然后我们当前可用的这个参数是谁呢?是password username per1和PER2,那可见呢,My be,将这些参数放在咱们的map集合里面的时候,是以两种方式来存储的,第一种方式是以a per这个注解的值为键,以参数为止,第二种方式是以PER1和PER2为键,以参数为止。
06:33
这个大家能看出来吧,是不是好,然后这个源码呢,咱们一会儿会去看啊,然后所以说大家可以看一下,先看一下咱们最终的一个结果,它有两种方式来存储我们当前的这个数据,对吧,然后在买在map集合中来存储数据,第一种以a per的值为键,然后以参数为止,第二种以per,以PER2为键,以参数为止,OK啊行,那所以说在这咱们就知道该如何去访问了。
07:04
OK,然后下面的大家注意啊,来啊来,下面大家来看,那我们现在咱们来总结一下,然后使用a per注解,然后来命名参数,OK,然后此时呢啊,咱们可以把这句话复制过来,对吧?此时咱们的myab,然后会将这些参数放在一个map集合中,以两种方式进行存储,一样的啊,首先第一种方式以什么为件,以a per这个注解啊注解的值然后为建,以参数为止,对吧?然后第二种方式以per,以PER2为键,以参数为持,那因此呢,咱们只需要通过咱们的井号大括号和Dollar大括号来访问键的方式去访问到值就可以了,并且还要注意单引号问题,能看懂吧?哎,这个大家注意啊。
08:02
行,然后这个就是咱们a per注解的命名参数,那有的同学可能不知道这是啥意思,叫做a per注解的值啊,为什么叫a per注解的值呢?这个大家应该知道吧,就是如果我们在用一个注解的时候,咱们这里面直接去写了一个内容,而没有用属性等于谁,然后这个时候我们默认所使用的属性就是value属性。OK吧,所以说咱们在这直接来写一个username,它其实就相当于value等于username能看懂不啊,所以说咱们说的是叫做a per这个注解的值啊好,这个大家看好了,行,那这个是我们当前咱们的第五种方式啊,第五种情况。呃,然后其实这第五种情况呢,然后也是一种非常重要的啊,咱们以后非常常用的情况啊,那我可以这样跟大家说,那大家来想啊,那比如说咱们的第一种情况的话,咱们传输过来的是单个的字面量类型对不对,那大家说我们能不能加a per呀。
09:12
可不可以?啊,咱们的第一种情况啊,如果咱们传输过来的是单个的字面量类型,那我们可不可以在这加上一个A的per,可不可以,可以吧,如果咱们加上了a per,那我们当前咱们咱们在第一种情况中,我们来访问咱们当前这个参数值的这个方式是不是就固定了呀?所以说啊,咱们一共讲了这五种情况,咱们的第二种情况,那咱们可以用a per来解决,对吧,多个参数嘛,对不对?第三种情况我们就是为了来自定义这个键,所以说咱们才需要手动把它放在一个map中的,是不是啊好,然后第四种情况的话是实体类类型的参数,那这种方式呢,非常的简单,咱们直接通过参数名属性名就可以来访问到属性值是不是啊,所以说我建议大家把咱们这五种情况呢,然后都把它给整合,为什么呢?整合为两种情况,第一种情况实体类对象这种情况,第二种情况全部都用eight per。
10:20
全部都用a para,然后这个时候大家就不需要再分这各种各样的情况了,有多个参数的时候怎么办,一个参数的时候怎么办,咱们只需要呢,把它们全部都加上a per,那这个时候我们来访问它的时候,都要以我们a per的值来进行访问就可以了。所以说这是我给大家的一个建议啊,我给大家的一个建议啊,好,当然呢,大家也可以把它就分为这五种情况,你用到哪一种情况呢,然后咱们就用哪一种方式来获取,但是呢,这个代码呀。它毕竟是我们自己去写的,所以说我还是建议大家呢,然后来制定一个规则,对吧?比如说我们现在就以两种情况为主,第一种实体类类型的,咱们不管,就以实体类类型的方式来访问,如果说咱们遇到的是其他情况,比如说单个的字面量类型,多个参数,或者说我们当前咱们传输过来的是一个map集合的时候,那咱们肯定也管不了,对吧?传输过来一个map,那咱们知道键就可以访问到它的值,但是如果我们传输过来的是单个或者说是多个字面量类型的时候,建议大家都加上a per来规定一下我们当前咱们所访问到这个数据的键是什么就可以啊。
11:43
OK,那这个是我们当前的第五种情况,叫做命名参数好啊。
我来说两句