00:00
好,那我们刚才呢,咱们是把这个修改功能啊和删除功能呢,咱们也进行了一个测试,那下面呢,咱们把咱们的查询功能呢,咱们也测试一下,首先呢,大家要知道这个查询功能啊,然后要比较着咱们的增删改呢,要稍微麻烦一些,就比如说我们之前咱们也写过咱们的工具类,对吧,然后工具类中咱们也封装过查询功能,然后我们是需要将咱们查询出来的数据转换为我们当前的实体类对象的,然后如果咱们查询出来的是一条数据,则转换为实体类对象,如果咱们查询的是多条数据,那咱们要转换为实体类对象的集合,OK吧,好,那所以在my be里面咱们没有这么复杂,但是呢,它和增删改也是有区别的,好,首先咱们先进入到我们的map,然后呢,在这咱们把咱们的方法创建出来,比如说呀,然后咱们返回的是一个U的对象,那大家在使用my be面向接口编程的时候,大家一定要注意,大家一定要想好我。
01:00
咱们当前咱们的功能呢,它到底是怎么来实现的,它到底应该有一个什么样的返回值,就比如说增删改简单,咱们可以返回int,你也可以返回VO,然后当然呢,如果说是个查询功能的话,大家一定要想清楚你查询出来的是什么,就比如说我们现在查询一条数据,咱们要转换为实体类对象,那我们就需要把它的返回值给设置为user,然后再来设置方法名叫get user by ID,然后括号,好,然后下面呢,咱们来写上一个注释,叫做根据ID,然后来查询用户信息,OK,好,然后我们把它复制到我们当前的映射文件中,咱们把这个S口L语句啊,然后来写一下,然后select的标签,对吧?然后我们的每一个S口L语句都是写在相对应的标签中的,然后ID跟方法名一致,然后我们再来写circle口语句select的形容,From t_user,然后。
02:00
Well ID等于好,那写完之后,咱们这个SQ句有问题没有呢?有啊,它哪里有问题,大家注意啊,然后我们从刚才的源码里面呢,实我们也能看出来,我们在执行soq语句的时候啊,其实他只知道谁呀,他只知道我们当前soq的一个唯一标识,然后他还知道我们当前咱们的一个操作的一个这个具体的一个操作类型是什么,比如说这是一个查询,好然后所以说呢,那我们的查询功能,咱们执行完SQ语句之后,大家说我们需要干什么,我们是不是需要把我们当前查询的这条数据所转换为的实体类的类型给设置出来,对不对,当然咱们在这有没有设置呀,没有,那我们可以先测试一下,比如说。来,咱们先写一个方法public,然后返回word的叫做test get user by ID,然后大括号,然后在这咱们先来获取我们的circle session对象,然后circle session里面然后有get map方法,咱们来获取user map的对象,然后再来调用咱们的get user by ID OK,获取一个user对象之后,然后咱们在这直接把它给输出就可以啊好,然后咱们一执行这个circle啊,大家会发现它就会报错啊,它会报一个什么错呢?然后大家来看。
03:28
好,然后大家看他报错了,报的什么错,然后很明显的一个错啊,他说我们当前咱们的一个查询在执行的时候呢,它没有一个什么呀,Result maps,然后被发现,然后result maps叫做结果映射。什么叫结果映射,那不就是把咱们的结果集查询出来之后,我们该和哪个实体类来进行映射嘛,对不对?然后呢,他说哪一个S口语句,就是我们当前咱们的这个叫com at,硅谷my bet map user map get user by ID认识不认识,咱们之前看源码的时候,咱们说过circle的唯一标识怎么是怎么写的,不就是name space circle的ID吗?换句话来说就是map接口的全类名点方法名,OK吧,然后大家再来看这句话,然后如果大家能把这句话看懂,大家就知道该如何解决了。他说我们当前没有一个result map也result type,也没有一个map被声明,也就是说我们当前出现这个问题,然后就是因为我们没有设置它,也没有设置它造成的,那这个东西咱们需要在哪设置呢?大家来看映射文件。
04:39
在我们当前咱们的查询的标签中呢,然后咱们在这就有一个type和map,然后这两个分别是什么意思,这叫结果类型,然后呢,来设置我们当前查询出来的数据要转换为的实体类的类型result map叫自定义映射,就比如说我们今天咱们在讲这个买倍体的特性的时候说过,如果你的字段名跟属性名不一致,那我们就需要用的自定义映射,或者一对多或多对一的映射关系,咱们就要用到这个自定义映射,也就是map,但是如果咱们的字段名跟属性名一样的话,大家注意咱们只需要设置type就行,只要把我们当前咱们查询的数据所转换的实体类的类型设置出来就可以啊好,那在这呢,大家注意给大家写一下,然后咱们的result type对吧?然后它是用来设置什么的,来设置结果类型,然后什么叫结果类型及咱们。
05:40
查询的数据要转换为的Java类型啊,这个大家注意,然后在这还有一个叫做result map result map是什么意思,叫做自定义映射,叫自定义映射,然后它来处理的对吧,比如说咱们的多对一,然后或什么一对多,然后咱们都可以来通过result map来实现啊,所以说它是用来处理多对一或一对多的映射关系,OK啊映射关系OK。
06:12
行,那所以我们现在咱们应该用什么呀?咱们直接用这个re type就行,好等到以后呢,咱们来讲到了多对一和一对多的映射关系的时候,咱们就需要用map了啊好,当然这两个东西大家看一下,你看它给我们的提示说我们没有设置它,也没有设置它,好但是这两个属性大家看好了,你只能设置一个,因为如果你设置两个的话,它就有两个映,它就有两个结果映射了,那它到底应该听谁的呢?对不对?所以说咱们这两个啊,它不能都没有,它也不能同时存在,咱们只能来设置其中一个啊好,然后在这,那我们要把查询出来的数据转换,为什么转换为user对象,所以在这咱们就要把user的类型给写上,那你能直接写个user吗?不行吧。
07:00
看起来挺简单,但是呢,大家要想你直接写个user,但是这个user指的是谁呀?我的pugo中咱们可以创建user,那我的map里面我也可以创建user呀,对吧?咱们只是在同一个包下面不能创建一个同名的一个类,但是在不同的包下面是可以创建的,对不对?所以说大家在这一定要把全类名给写上,com.at硅谷点my be的pu.u好,当然呢,这个大家可能会感觉非常麻烦,那咱们等到一会咱们再讲买be提的核心配置文件的时候,咱们有一种简单的设置方式啊好,那下面呢,我们来进行一个测试,大家来看,那我们刚才是因为没有设置结果类型,但是我们现在设置的结果类型之后,大家再来看一下咱们当前的这条数据,是不是就已经查出来了?OK吧,然后咱们就设置了我们当前所查询出来的一条数据所转换成的Java类型,就是我们当前的实体类的类型,OK吧,好,然后为什么我在这不写实体类,那是因为啊,咱们以后还会去查,还会把一些数据查询为其他类型,就比如说啊,大家学过查询单行单列的数据,那单行单列的数据的话,那我们是不是查询出来的,要么是个字符串,要么是个double浮点,要么是个数值,那你能设置为实体类吗?不能,咱们设置的应该是我们Java中相对应的类型。还有呢,就比如说咱们后边会讲各种查询,然后呢,咱们会把一条数据查询为一个map集合,那这个时候这个map集合的话,然后也是我们以后常用的一种查询方式,对吧?因为大家都知道我们查询出来的结果,它如果有相对应的实体类那更好,如果没有相对应的实体类怎么办?
08:48
那咱们就得用map集合了,OK吧,这样的啊,好,那这个是查询,根据用户,根据用户的ID来查询一个用户信息,那下面呢,我们再来写一个,咱们来查询所有的用户信息,大家看啊,然后它的返回值应该是什么?那一个用户信息对应的是一个有的对象,那多个用户信息对应的就是多个用户对象,那咱们是不是就要用一个容器来把它存储起来,所以说这个时候它的返回值就是一个list子的集合,好它的泛型是user,咱们叫做get or user OK啊行,大家来看一下这个功能,然后叫什么叫做查询所有的用户用户信息。
09:32
好,然后我们同样的操作来找到我们当前的映射文件,然后把咱们的SQL语句啊,然后写一下select的标签,Idl跟方法名一致,然后我们现在咱们来设置read的type,大家注意这应该写什么?有同学说可能要写list,但是大家看好我在这给大家写的这个注释啊,是及查询的数据要转换为的Java类型,那我们当前查询出来的数据要转换,为什么?我们是要先将它放到实体类中,然后再把它放到一个集合里面的,所以说在这写的啊,跟我们上面是一样的,咱们也是要来设置,因为咱们的返回值都已经确定了,是list的吗?所以说我们只能来设置我们当前要转换为的实体类类型,先转换为实体类对象之后再放到集合里面,这个大家注意啊。
10:24
啊,然后下面SQL语句select星from t_user好,然后我们来找到咱们的测试类。复制。对吧,然后在这大家注意这个叫做什么叫做get or user,然后咱们把方法给换一下,然后是map.get or user方法返回值呢,然后是一个list的集合,然后在这咱们可以直接利用咱们list里面的for方法,然后来这个把集合中的数据给循环输出。怎么写system.out然后下面print LN方法引用对不对?好,然后下面我们在这咱们一个输出,大家就可以看到这个效果了啊好。
11:13
好,大家来看,那我们现在咱们这里面呢,是不是就有124这三条数据,因为咱们添加的数据是一样的,咱们刚才修改的那条数据,我们把它给删除掉了,对不对?好,这就是来查询所有数据的一个功能,所以说呢,大家一定要注意,查询要比增删改呢稍微复杂一些,因为在咱们的查询功能的标签中,我们是需要来设置一个额外的属性的,叫做typeb或map,然后我们当前因为字段名跟属性名完全一致,所以说我们在这直接用伪的type就可以,也就是来指定我们当前要查询的数据,我们要查询的数据所转换为的实体类的类型,OK吧,好啊。
我来说两句