00:00
好,那我们刚才呢,咱们讲了my be体获取参数值的两种方式,还有呢,My be体获取参数值的各种情况,那其实呢,咱们还有两种情况啊,就比如说我们的map接口的方法,传输过来的是一个数组,或者说是一个list的集合,那这个时候我们该如何去获取我们当前的参数值呢?大家注意这两种情况的时候,其实我们的my be也有固定的访问方式,但是其实咱们也不用担心,因为咱们已经讲过了这个a per注解,如果咱们不知道该怎么访问,那简单呀,大家直接把参数上加上a per就可以。对不对,对吧,然后这个时候就可以以我们指定的方式来进行访问了,是不是啊,好,然后这个数组和集合类型的话,就等到我们在讲动态circle的时候,咱们再具体的去说啊。好,那下面呢,那我们来看一下my be中的各种查询功能,因为咱们刚才在看源码的时候,大家会发现my be在执行查询功能的时候,它会判断我们当前咱们方法的返回值,如果方法的返回值是不一样的,那它执行的代码也不一样,所以说在my be中咱们查询的这个我们就可以来设置各种不同的查询结果,比如说我们查询一个实体类对象,咱们来查询一个list息的集合,或者说咱们来查询单个数据,比如说我们的聚合函数,或者说叫做分组函数,这个时候咱们查询出来的应该是单行单列的对不对?或者说我们查询出来的是map即可,对吧?然后大家注意这个就是我们买杯体中的各种查询功能,那我们下面咱们就来看一下咱们的前两种情况,首先第一种咱们查询一个实体类对象和查询一个类似的集合,其实像这两种情况的话,咱们都已经写过很多次了,对不对?
01:52
那为什么咱们还要具体的去讲呢?因为大家注意,我们一定要思考我们当前查询出来的数据是什么,你才能给他确定我们当前的返回值类型应该怎么去设置。比如说我问大家,你查询出来的数据有多条的时候,你能将它转换为一个实体类对象吗?
02:13
应该是不行的吧,是不是啊,所以说下面咱们就把这个功能来写一下啊,首先呢,大家来看,那我们现在咱们先来创建一个map接口,那这个map接口呢,咱们就以功能,然后来创建啊,来命名叫做select map,这是咱们查询功能的一个接口啊。好,下面咱们再来创建它所对应的映射文件,就my be-map OK,啊,行,那我们要来保证map接口的权利名和我们的命名空间,然后保持一致。com,点爱的硅谷,点my be,然后点map,然后点select map OK,啊,行,那我们先来写咱们这两个这个简单的功能,首先啊,来大家看第一个功能,我们是根据ID来查询用户信息,大家看啊,啊,根据ID来查询用户。
03:09
D,然后来查询咱们的用户信息,好啊,行,然后大家看它的返回值应该是个U对象吧,是不是啊,然后我们当前咱们的方法名,咱们就叫做get user by ID括号啊,那行,那我们在这应该传进来的是一个ineg类型的ID,没问题吧。那大家看这种情况是不是就是我们刚才讲过的my be获取参数值的第一种情况,那所以说我们是可以通过井号大括号或Dollar大括号以任意的名称来获取的,对不对?但是我建议大家在这加上一个a per,因为咱们加上a per之后就没有那么多的情况了,咱们就只有一种情况,我们就要以a per这个注解的值来进行访问,OK吧,所以说我刚才咱们在讲完五种情况的时候,我就跟大家说过,我说以后咱们就只有两种情况,建议大家就只把它当做两种情况,一种是实体类类型的情况,一种是我们需要加a per的情况,OK吧?啊,所以说我建议大家是在这把它给加上啊。
04:18
好,然后下面咱们来CTRLC,然后找到映射文件,把这个circle语句呢,咱们来写一下,然后是select,它的ID要跟方法名一致,然后result type也要叫做user,对吧?好,然后select形from from t_user然后while ID等于井号,大括号怎么写ID吧?是不是因为咱们加上了a per注解之后,My be会把它放在map集合中,然后以什么为键?以我们a per注解的值为键,以参数为止?对不对,然后以以PER1为建议参数为止,当然这种情况咱们就不需要考虑了,我们只需要来考虑我们当前咱们自己设置的这种访问方式就可以啊。
05:08
好,然后下面呢,大家再来看,那我们现在咱们再来创建一个咱们的测试类来啊。好,然后这个咱们叫什么叫做select select map test。Test OK啊行,然后首先咱们加上一个it test注解,然后方法的返回值没有对吧,然后咱们叫做get user by ID括号,然后下面呢,咱们首先要来获取咱们的circle session对象,获取完之后来获取咱们circle session,获取咱们的map对象啊叫select map.class好,获取完之后来调用我们的get user by ID吧,应该是有三吧。一应该是没有了,应该有三对不对,那我们就来查询一下ID为三的数据,第2SOOT咱们直接把它给输出来大家看啊,好,然后下面呢,大家来看,我们现在来一个执行,大家来看一下有没有问题啊,应该是没有任何问题的是不是啊好,那我为什么要给大家写这样的一个功能,大家来看,那如果我们当前咱们查询出来的数据有多条呢?你比如说我的映射文件中,我把这个SQL语句它的条件给它删掉,那我们现在咱们查询出来的数据是不是应该有三条啊。
06:30
大家来看一下数据库里面是不是有三条数据啊,对吧,那我现在如果我来执行了,我把这三条数据是不是复制给了一个实体类对象,大家说这样好使吗。不好使啊,来,我现在一个执行大家看一下啊,直接报错,为啥?因为咱们查询出来的结果是三条,但是我们当前却用了一个实体类,用了一个实体类对象来获取,所以说这个时候他就会给我们报一个错,叫too many results exception。
07:03
OK吧,好,然后咱们来看后边这个错误的描述啊,他说我们当前咱们查询出来了一个结果,或者说是nulll,然后tobe return by select y什么意思?就是它监测到我们当前方法的返回值,然后是一个实体类对象,所以说在买be的底层,它所调用的方法叫做select one,而select one这个方法的返回值只能有一个结果,或者说是null,但是我们最终查询出来的几条三条,所以说他就报错了。哎,这个大家注意啊,所以说我就要在这儿来给大家写一下了啊,杠星星回车叫做my be的各种查询功能,首先大家注意咱们若查询出的数据,然后只有一条。然后可以通过啊,可以通过实体类对象,然后接收能看懂吧,然后第二种情况,若咱们当前查询的,查询出的数据有多条对吧,然后一定不能通过实体类对象,然后来接收结果对不对,来接收好,然后此时会抛异常,什么异常too many results exception。
08:38
能看懂吧,这个大家注意啊,好,然后呢,我们下面咱们再来看啊,那我问大家,那如果我现在我查询出来的数据只有一条。那我能不能在这儿把我们当前这个方法的返回值,然后来设置成一个list的集合,大家说可不可以?啊,如果我查询出来的数据只有一条,那我可不可以用一个list集合来进行接收呢?可不可以啊,大家想一下。
09:07
List集合,这是一个集合呀,那集合里面可以有数据,也可以没有,如果有也可以是只有一条啊是不是,所以说我们现在咱们来一个执行之后,大家来看一下啊来。大家看咱们输出的这个是不是一个集合的方式,然后我们现在输出的不就一条数据吗?有问题吗?没有任何问题。所以说大家注意,如果你查询出来的数据只有一条,那我们可以通过实体类对象或者集合或者集合来进行接收,但是如果你查询出来的数据有多条的话,大家注意你只能以集合来接受,这个大家注意啊,只能以集合来接受。这个答案一定要看好,因为咱们刚才已经试了,如果你用一个实体类对象来接收的话,它是不是就直接报错了呀?
10:01
是不是就直接报错了啊好。那行,那我们在这咱们再总结一下,若查询出来的数据有多条的话,然后可以通过谁呀,可以通过咱们的list集合,List集合然后来接收。List集合接收,但是一定不能通过实体类对象来接收,因为此时会抛出异常,Too many results exception,这个大家能看懂吧?好啊,行,那下面呢,咱们再来写一个查询所有数据的对不对?这个大家可以下去自己咱们来写一下吧,来好,然后这个是来查询所有的用户信息,对吧?然后返回值是一个list,然后泛型是user,然后叫做get or user,好,然后咱们把这个S语句呢,然后来写一下,找到咱们的映射文件。然后select对吧,然后方法名要跟口语句的ID保持一致,然后result type是user,然后select形from t_user就可以了啊行,然后咱们可以来进行一个简单的测试啊,大家来看。
11:15
好,然后test get user。行。然后大家来看,那我们现在咱们所调用的方法应该是谁,是不是应该是咱们的get or u的方法对不对,然后我们现在来一个执行,大家看这个绝对是没有问题的啊。好,然后如果说我现在我要把我的方法的返回值改成是一个优对象,这咱们就不试了,因为刚才咱们已经试过了,对不对,我把这个搜Q区的条件给它删了之后,我们查询出来的应该是三条,但是我们现在通过一个实体类对象来接收,那不就是跟我们刚才咱们所报的错是一样的吗?对不对,这个大家注意啊,好。OK,那这个是我们当前咱们的这两种情况,如果查询出的数据只有一条的时候,我们可以通过实体类对象,或者说是咱们的集合来接收啊,或者说咱们可以这样去写啊来。
12:12
如果说我们查询出来的数据有只有一条,然后咱们可以通过实体类对象,然后来接收,对吧,然后第二种情况,然后咱们可以通过,然后咱们的list集合,然后来接收结果对不对?然后咱们的第三种情况,其实也可以通过一个map集合来接收,OK吧,但是这个咱们一会再一会再说啊好,如果查询出来的数据有多条的话,大家注意,首先咱们的这个A第一种情况可以通过类似的集合来接收,然后其实咱们也可以通过map集合来接收,但是大家需要注意的一点就是一定不能通过实体利率项接收,因为此时会报这个异常。
13:01
能看懂吧,这个大家注意啊,然后至于怎么去查询咱们的map集合呢,然后咱们一会再说OK吧啊。
我来说两句