00:00
好,那我们刚才呢,然后咱们已经这个讲了,这个my be获取参数值的两种方式,一种是Dollar大括号,一种是井号大括号,而Dollar大括号它的本质呢就是字符串拼接,而井号大括号它的本质呢就是占位符赋值,那所以说针对于不同的情况,我们的多大块和井号大块该怎么去使用呢?就是下面咱们需要讲的一个问题了啊。好,然后首先咱们先来看咱们的第一种情况,大家注意啊,叫做my be,然后来获取参数值的各种情况啊,各种情况大家注意,首先第一种情况,比如说咱们来写一个简单的啊,然后如果我们当前咱们的map接口方法的参数为单个的字面量类型。哎,这个大家注意map接口方法的参数为单个的字面量类型,比如说下面咱们先来写一个案例,来大家看,这是我们当前的map接口,比如说啊,来咱们现在要来实现的功能呢,是根据是根据咱们的用户名,然后来查询用户信息。
01:15
OK吧,好,然后它的返回值呢,用户应该是唯一的吧,对不对,所以说返回值是user,然后咱们的方法名就叫做get user by username括号,那既然是根据用户名来查询的,那咱们的方法中必定会有一个参数为username。OK吧,好,然后把方法复制来找到咱们的映射文件,然后把咱们的方法呢,哎,所对应的circle口来写一下,咱们是不是要来保证咱们的方法名跟circle口L语句的ID保持一致对不对?好,大家来看啊,方法名应该是小写的啊,好,然后再往下来设置咱们的result type,那咱们是不是直接来使用类型别名就行对不对?大家来看这个circle口语句select from t_user,然后while username,然后等于井号大括号,或者说咱们在这要来写的是Dollar大括号,那我们到底应该用哪个呢?大家注意,那既然Dollar大括号表示的是字符串拼接,而我们的井号大括号它表示的是什么?占位符负值,那这两种方式都是咱们GDBC中原生的方式,那所以说这两种都行。
02:31
那至于他们该如何去使用,咱们先来测试井号大括号,来大家来看啊,好,那怎么来写呢?大家说这里面咱们应该写什么,你比如说我现在传输过来的这个参数的名字呀,叫username,对不对?但是其实大家也都知道,当我在一个方法里面来使用这个参数的时候,它的名字不重要,它的值才是最重要的,对不对?所以说我们在这应该怎么去获取这个参数值,那其实呢,咱们最直观的感觉,那我肯定是要通过参数名来获取的,对不对?
03:07
那咱们这样去写它到底对不对呢?来下面咱们就来测试一下,来大家看啊,啊,我们可以把这个方法复制一下对不对,然后这个咱们叫做get user user,然后by username,对吧?然后我们在这要来调用的方法应该是咱们的map.get user by username,比如说咱们就根据order me来查,来大家来看啊,好,然后获取完之后,然后咱们把它给输出,大家看一下咱们到底能不能获取到呢?来下面我们来一个执行,大家来看啊。好。获取到了没有,获取到了,然后咱们再来看咱们的日志信息,大家通过这个日志信息,大家能看到什么?来,我们再咱们的这个标签里面,我们所写的circle是不是长这样的呀,但是它最终执行的circle是什么样的呢?是不是会通过咱们的问号来代替我们的井号大括号,对不对?那所以说大家想想,这不就是占位符赋值吗?那所以说井号大括号的本质不就是占位符赋值吗?对不对?
04:17
这个大家看好啊好,然后所以说呢,咱们的这种方式呢,肯定是没有问题的,那咱们这里面只能写username吗?咱们可不可以来写别的值呢?你比如说我手一抖,哎,写了个AAA,然后下面咱们再来一个执行,大家来看一下啊,来有问题没有,没有问题。是不是,那AA可以,那BBBCC是不是也可以啊?所以说大家注意,在这儿我们所传输过来的参数名不重要,咱们传输过来的值它才是最重要的,而且我们的占位符赋值,它跟我们的值叫什么也没关系,它只跟咱们的位置有关系,大家说是不是对吧?所以说呢,大家看好了,如果我们当前传输过来的是单个的字面量类型的话,我们可以通过井号、大括号来获取,可以通过任意的名称来获取咱们的参数值。
05:13
但是呢,那必定肯定是建议大家肯定见名实义啊,你说你写个AAA,那你知道这是啥意思,不不知道,所以说建议大家在这写个user name跟咱们当前的参数名保持一致,因为毕竟这个参数名就表示了你所传输过来的数据的含义嘛,对不对,这样的啊。好,OK,大家注意千万不能在这直接ctrl shift加斜线,因为这种注释生成的是不对的,知道吧,所以说我们得自己手动来写注释啊,先括号叹号杠杠杠杠,先括号好啊行,这是咱们的井号大括号,那大家说多大括号能实现吗?比如说我在这儿,我直接把它换成是Dollar,然后我们现在来一个直行,然后大家来看啊,来报错了。
06:02
对不对?为啥会报错呢?来,咱们先来看这个circle口语句,大家来看一下啊,然后我们在S口语句中,咱们在这写的是Dollar大括user name,而我们在真正去执行的时候,咱们在这直接写的是order me,那大家说这说明什么?这说明咱们的Dollar大括号它的本质不就是字符串拼接吗?对不对?但是为什么会错呀?来大家看一下为什么会错,这还看不出来吗?这里面是不是少写了一个单引号啊?所以说咱们是不是在刚才我们在讲两种方式的时候,咱们就说过多大括号,大家一定要注意它的单引号问题,因为它的本质是字符串拼接,所以说当我们在一个SQ语句中去拼接一个字符串的时候,我们就必须要干什么,手动加单引号,所以说这个问题咱们该如何解决啊,手动加个单引号就行。来下面大家再来看,我们来一个执行,大家看啊,好,有问题没有,没有任何问题,好,这个大家注意,这就是多大括号,那我们当前在多大括号里面,我们能不能用其他的值呢?大家来看,我现在来一个执行,大家看,哎,没问题吧,所以说咱们的井号大括号和Dollar大括号都可以通过任意的名称来获取相对应的参数值,但是呢,大家一定要注意单引号的什么问题,一定要注意Dollar大括号的什么问题,单引号问题这个答案一定要看好啊行,那我们在这咱们来总结一下,大家说啊,这个时候咱们可以怎么获取啊,咱们可以通过多大括号,然后和井号大括号对吧。
07:48
可以通过井号大块和Dollar大块,然后来获取参数值,然后以任意的名称,或者说其实就是任意的字符串,对吧,然后来获取谁呀,咱们的参数值,然后但是需要注意谁,大家说是不是需要注意,然后咱们Dollar大括号的单引号问题。
08:15
这个大家注意啊,好,那这是我们的第一种情况,如果map接口中的方法,它的参数是单个的字面量类型,那咱们的这两种方式都可以获取,以什么方式来获取,以任意的字符串来获取咱们当前的这个参数值,对吧?但是呢,需要注意咱们Dollar大括号的单引号问题,这个大家注意啊。或者说我在这写任意的名字吧,任意的名称啊,任意的名称来获取啊,其实你写个数值也行,但是这个大家注意啊,咱们,呃,如果以后咱们遇到这种情况的话啊,然后咱们一会儿会讲一种固定的解决方案,所以说这种情况大家也不需要考虑太多,如果你真的要遇到这种情况,而如果你不想来使用咱们固定的解决方案的话,那大家注意你也不需要去考虑他都能够用什么,然后我们在用的时候基本上都是见名实义的,所以说既然他没有规则,那我们就给他制定一个规则,大家在用的时候就用我们所传输过来的参数的参数名就可以。
09:23
OK吧,好啊,这个大家看好那行,那这个是我们买be获取参数值的第一种情况啊。
我来说两句