00:00
好,那我们刚才呢,咱们是讲了my beities中的各种查询功能啊,然后下面呢,咱们来看一下my be中特殊circle的执行,那什么是特殊的circle呢?比如说我们在讲买杯体获取参数值的两种方式的时候,咱们讲了井号大括号和Dollar大括号对吧?那井号大括号和Dollar大括号它们两个有什么区别呢?大家还记得不?井号大括号它的底层使用的是占位符赋值,而咱们的Dollar大括号呢,使用的是字符串拼接,那因此呢,井号大括号它是可以自动加单引号的,但是Dollar大括号呢,它是不会自动加单引号的,在有些情况下,我们是需要手动加单引号的。但是呢,对于一些特殊的SL语句来说,然后呢,我们建议大家是来使用井号大括号,但是呢,一些特殊的SQL语句中,我们是用井号大括号,它是会出现一些问题的,就比如说呀,咱们的模糊查询,还有呢,批量删除,还有咱们的动态设置表明,对吧?像这些功能,那首先咱们先来看一下咱们的模糊查询,模糊查询的S句大家应该都会写对吧,Select的形容,From表名,While字段,然后like加上单引号百分号,然后把我们模糊的这个数据呢,然后放在百分号中间,就可以来实现一个模糊查询。
01:21
那为什么他不可以啊,不可以来使用井号大括号呢?或者说他使用井号大括会出现一些什么问题,我们又该如何来解决呢?那下面呢,咱们就来给大家写一个案例啊。首先呢,咱们先来重新创建一个map接口。好,大家来看,比如说这个map接口,咱们就叫做circle map。好,然后下面咱们来创建它所对应的映射文件。好,然后我们把这个第一个功能呢,咱们来写一下,比如说第一个功能咱们就是根据用户名来进行模糊查询,根据用户名然后模糊查询用户信息,OK啊好,写完之后大家来看它的返回值应该是一个list集合吧,因为咱们的模糊查询查询出来的数据是不是有可能是多条,所以说我们现在咱们就要来使用这个list集合来作为方法的返回值。
02:22
然后咱们的方法名呢。叫做get user by like OK,好,那这里面咱们需要传过来一个模糊的值,因为我们是根据用户名进行模糊查询的,那所以说咱们就叫做user name OK,那这个时候它就符合了我们获取参数值的第一种情况,那所以说建议大家在这呢,同样也是加上一个a per注解,然后来为我们当前咱们的参数来设置我们固定的一个访问方式。然后下面我们来写它所对应的circle,首先呢,我们要来保证命名空间和我们map接口的全类名保持一致,然后下面咱们再来写这个circleql语句,Idl跟方法名一致,然后咱们的result type需要查询出来的也是咱们的用户类型,User类型,好select星,然后from t_user,然后while username是以username来作为模糊的条件的啊,然后单引号,然后其中是百分号,百分号,然后在这儿的话,那我们一般情况下咱们用的是井号大括号,那咱们就来测试一下井号大括号能不能来解决咱们模糊查询的问题啊。
03:35
好,那我们在这咱们怎么写,是不是应该是通过user nameme来进行访问,对吧?因为it per这个注解来加上之后呢,然后my be会将咱们的参数默认放在一个map集合中,以a per注解的值为键,以参数为值,那所以说我们现在要想去访问它的话,咱们直接通过a per注解的值来进行访问就可以啊。
04:00
好,那下面呢,我们来创建一个测试类,来测试一下咱们的这个功能啊,比如说咱们叫做circle map test,好,来写一下测试方法。VO test叫get user,然后by like OK,好,然后首先第一步咱们需要来获取咱们的circle session对象,第二步呢,来获取我们当前咱们的circle map的一个对象。好,获取完成之后,我们就可以来调用我们当前的方法了,比如说咱们根据A来进行模糊查询,它的返回值呢,是一个list集合,那咱们直接把list集合来进行输出,好,然后下面呢,我们在这咱们一个执行,大家来看一下这个效果啊。好,然后咱们执行完之后,大家会发现这个S口语句呢,然后直接就报错了,那为什么首先咱们来看它输出的信息,然后我们当前咱们的SQ语句呢?然后是输出了没问题,但是呢,这个时候大家会发现一个问题啊,什么问题呢?就是我们当前咱们用井号大括号,然后来获取参数值的时候,在我们真正去执行的SQ语句中,井号大括号会被问号来进行代替,对吧?那我们当前呢,然后因为我们用的是模糊查询,所以说咱们的井号大括号需要写的一对单引号中,那单引号在咱们的MYQ里面,在circleql语句中,它表示的应该是一个字符串。
05:31
那所以呢,当我们用井号大括号来获取参数值,并且在执行的过程中用问号去代替井号大括号的时候,那问号是不是就存在于了咱们的单引号里面,那也就是说现在这个问号是属于咱们字符串的一部分的,那它会被解析成占位符吗?不会,它会被当做是我们字符串中的一部分来解析,那所以说我们当前咱们的SQL语句中并没有占位符,而我们却为我们的占位符进行了赋值,所以说他就会报错。
06:04
那所以我们该如何来解决这个问题呢?那很简单的一个问题啊,大家想想我们该如何解决,既然井号大括号不不行,那我们是不是就可以来使用Dollar大括号,直接将Dollar大括号所对应的值呢放在我们的单引号里面,那这个时候咱们的模糊查询就能够实现功能了,所以说大家来看我们当前咱们的第一种解决方案就是不使用井号大括号,而使用Dollar大括号,那这个时候当我们再来执行的时候,大家会发现这个SQL语句就没有任何问题了。OK吧,当然呢,这是咱们的第一种方案啊,然后下面大家再来看一下咱们的第二种方案,OK,大家应该都还记得,在我们学习my circle的时候,咱们学习过my circle中的什么my circle中的字符串函数,MY中的字符串函数里面有一个con叫做字符串拼接,那所以说我们现在就可以这样去写啊,来大家看好,那既然我们现在咱们要把它给拼接成这样的方式,那我们可不可以把这一部分拿出来作为一个字符串,把中间的内容拿出来作为一个字符串,然后再把咱们的剩余的这个百分号,然后作为一个字符串,然后咱们再把这三个字符串进行拼接,那拼接之后的结果是不是应该就是我们想要的结果了,对吧?所以说大家来看咱们的第三种方式,咱们可以这样去写啊。
07:30
好,然后like通过咱们的con来进行字符串拼接,我们第一个要拼接的字符串是百分号,然后第二个要拼接的字符串,这个时候咱们是不是就可以来使用井号大括号了,对吧?然后再往下咱们第三个要拼接的同样也是一个百分号,那大家来想一下啊,如果说这个时候咱们的单引号,然后百分号,百分号然后呢,去加上我们当前咱们的井号大括号解析出来的数据,因为它本身也是会加单引号的,所以说解析出来的就是单引号A,再加上单引号百分号,然后单引号,那这个时候大家来看,那我们最终这两这三个字符串拼接之后的结果,这中间的单引号是不是会被取消对不对,然后中间咱们的单引号,然后取消,然后这个时候最终拼接的结果就是单引号百分号A100分号单引号了,OK吧,好,这是咱们的第二种方案啊,这个大家注意那下。
08:30
下面我们来执行一下,看这种可不可以执行来啊。好,大家看一下并没有任何问题,所以说这是咱们的第二种方式也是可以的啊,好,下面咱们来看咱们的第三种方式,也是我们以后用的最多的一种方式,来大家来看啊,好,怎么来写呢?大家看好咱们可以这样,咱们可以直接在我们的百分号两边加上一对双引号,然后让它直接去拼接我们当前咱们的井号大括号中的内容,来大家看啊好,在这呢,也是一个双引号百分号,大家注意这种方式也是可以的,而且这种方式也是我们以后最常用的一种方式啊。
09:12
好,下面我们来执行大家看一下啊,好,那我们现在是能够查询到最终的结果的,所以说大家看,那我们现在来解决咱们的模糊查询呢,然后咱们就有了三种方式,这三种方式大家用哪一种都可以,但是建议大家来使用我们最后给大家写的这一种啊。好,那这个是我们的模糊查询。
我来说两句