00:00
好,那我们刚才呢,然后咱们是讲了两种方式对吧,然后来处理字段名跟属性名不一致的情况,那下面呢,咱们来看一下咱们的第三种方式,那当然第三种方式呢,就是咱们的result map了,因为咱们之前在实现查询功能的时候就说过result type呢,然后是我们默认的映射关系,而result map呢,是我们自定义映射关系,那所以说我们现在咱们就可以通过result map,然后来设置我们的哪一个字段要和咱们的哪一个属性之间来进行映射。OK,那所以说呢,大家来看,那首先咱们先找到咱们的映射文件,那我们现在不用这个circle了,咱们需要重新去写一个,那怎么办呢?大家注意,我直接在这把它的ID跟方法名设置的不一样,那我们再来写一个circle select的ID跟方法名一致,那所以说这个circle去还会执行吗?就不会了啊,然后在这咱们还能用result map吗?大家注意不能1RESULT type吗?不能,因为咱们的result type它只能来解决默认的映射关系,也就是字段名跟属性名一致的情况,而如果我们现在咱们要想自定义映射的话,那我们就可以来使用咱们的result map。
01:18
大家来看,直接来使用咱们的result map就行,那result map里面来写的是什么?Result type中来写的是我们当前咱们已经创建好的,或者说是一个已经存在的一个类型,而咱们的result map呢,是专门来解决某一个类型与我们查询的结果的映射关系的,所以说这个result map大家注意我们来写的是啥?写的是某一个result map标签的ID。大家注意,因为叫自定义映射,所以说我们一定要来设置字段和属性的映射关系,所以说呢,我们在这需要是我们是需要通过一个result map标签来设置咱们的自定义映射的,所以说大家来看,比如说我们现在咱们的ID叫什么呢?大家看好了,比如我们的ID,咱们就叫做这个e reut result map OK,咱们就叫做e result map,好,然后把它给复制出来,放到这就可以了,那这个时候我们当前咱们通过这个circle语句,这个查询语句查询出来的数据啊,就会通过我们的result map中所设置的自定义映射的映自定义映射的关系,然后来进行映射,OK啊,那这个type的话,大家说咱们应该写什么呀?我们要来处理的是哪个类型的映射关系啊,是不是要来处理的是咱们的emp这个类型的映射关系。
02:50
因为这个类型里面的属性啊,跟我们当前咱们查询出来的字段,然后是不是不一样,所以说咱们才需要处理他们的关系啊,好,那怎么去写呢?很简单,大家来看这里面咱们有ID属性干什么,专门来设置咱们的主键的映射关系啊,好,然后property来写的是属性名叫做EID,那咱们的字段是不是也叫EID啊,是不是啊,然后咱们还有其他属性,其他标签叫result来设置我们普通字段的映射关系,比如说我们第二个咱们是不是要来设置咱们的属性名叫emp内,咱们的字段名叫emp下划线内幕。
03:36
OK吧,所以说ad设置主键的映射关系,而result设置普通字段的映射关系啊,那咱们来复制一下,这是不是应该是H,这也是H,这是sex,这也是sex,因为属性名是sex,字段名也是sex,你看那有同学会说,老师那属性名跟字段名一样,咱们可不可以不设置,不可以。
04:00
如果我们现在用的result map,那建议大家把所有的字段和属性之间的映射关系全部都设置出来,这个大家注意啊,好,还有最后一个是咱们的email和email email OK,这样就行啊,好,那这个是我们当前result map里面咱们常用的两个标签,一个是ID设置主键的映射关系,一个是result来设置普通字段的映射关系。当然咱们这里面还有呢,叫做association,干什么呢?处理多对一的映射关系的,这里面咱们还会用到一个叫connection,是来处理咱们的一对多的映射关系。这个大家注意啊,行,那下面呢,咱们就来测试一下呗,来把circle语句写出来,怎么写也是select的形容,From表明就完事了,大家注意,咱们现在要的结果就是当字段名跟属性名不一致的情况,然后来解决他们的映射关系的嘛,对不对?所以说咱们直接来查询emmp下划线内幕就可以了啊,再说了,我们现在既然我们这个select的标签,它所用到的结果映射是我们上边所定义的结果映射,那所以大家就一定要保证property来设置的是我们这一个类型中的属性名,而我们的column来设置的必须得是我们当前所查询出来的字段名,所以说大家一定要看好,不能随便乱写啊。好,那为了我们看到这个效果呢?更明确一些,我在这呢,把这个setting标签咱们给它注释掉,那这个时候咱们是不是没有这个自动的映射关系了,那我们。
05:40
是不是就可以来看到我们这个result map的效果了,对吧,好。来,那咱们这样写还不太行对吧,那咱们就直接把它给注释掉啊,行,这个为什么会变成是这样的啊,想必大家应该也都知道为啥呀,因为我们的注释是不能嵌套的,对不对?所以说呢,我在这儿已经写了注释了,如果说我在外层再来写一个注释,那它是会报错的,所以说当我们通过快捷键来生成咱们的注释的时候,注释里的注释就会变成这个符号所对应的实体,比如说按LT分号,这个就是我们当前咱们的小于号,这个大家注意啊,好。
06:24
那行,那下面我们再来一个测试,大家来看,我们现在来一个执行,大家看好啊。行,大家看有问题没有,没有问题吧,我们现在咱们调用的方法是不是叫做get,咱们调用的方法是不是叫做get o e,那它所对应的S是不是应该是它对不对?如果在这大家用result type的话,那它很明显字段名跟属性名不一致,而且我们也没有设置全局配置,那所以说字段名跟属性名绝对是匹配不到的,而我们现在咱们用的谁呀,叫做result map,那这个时候我们就可以自己去设置字段与属性之间的关系了,OK吧,好啊,行,所以说大家来看咱们的第三种解决方案是通过什么?是不是通过咱们的result map,然后来设置自定义的映射关系,OK。
07:21
好,然后我把咱们的这个标签来复制过来,然后把它给放到我们的这个笔记里面就可以啊行,那咱们把这给它对齐。行,OK啊,那我们在咱们的映射文件中呢,我也把这个标签呢给大家写一下,首先咱们的result map这个标签,然后是用来干嘛的干什么的,是用来设置咱们的自定义映射啊,自定义映射关系,OK,然后其中的ID是用来设置什么叫做唯一标识,那就肯定不用说,那不能重复呗,对不对,哎,不能重复,好再往下咱们的tap tap来表示的是什么?Type是用来设置映射关系中的什么类型。
08:10
啊,因为咱们的映射关系指的是我们当前咱们的查询出来的字段与属性之间的关系,所以说。这个type主要是来设置咱们映射关系中的实体类类型。实体类类型,这个大家注意啊,好,然后再往下,然后咱们这里面的子标签对不对,都有谁啊,是不是有这个ID啊,这个ID这个子标签是用来干嘛的,是不是应该用来设置什么,用来设置咱们的主键的映射关系,而我们的这个result大家注意,它是用来设置普通字段的映射。关系OK,普映射关系好啊行,然后那我们这里面是不是还有相对应的属性,那这个属性咱们有property,然后咱们在这儿是不是还有这个卡对不对,那property大家注意这里面来写的是谁,这里面是来设置咱们的映射关系中的什么属性名。
09:17
能看懂吧,是来设置映射关系中的属性名,那它必须得是谁的属性名呢?大家注意,必须,然后是咱们的type属性,然后所设置的实体类体类类型中的属性名,OK,再往下咱们的卡,然后这个是用来设置什么,设置映射关系中的字段名,大家注意这个必须得是什么?必须是啊,然后咱们的SQL语句,然后查询出的字段名,所以说大家注意,你一定不能随便设置。
10:00
我们当前column指的是字段名,而property指的是属性名,属性名就必须得是我们所操作的这个类型中的属性名,而我们的column设置的是字段名,就必须得是我们当前的这个circle所查询出来的字段名。OK吧?啊,这个大家一定要看好,而且呢,记好啊,这result type只在咱们的查询功能中有用,知道吧,增删改的话需要设置映射关系吗?不需要啊,所以说这个答案一定要看好,这是我们的第三种方式。然后来解决我们当前字段名和属性名不一致的情况,当然呢,如果咱们的result map,你用它来解决字段名跟属性名不一致的情况的话,说实话啊,有点浪费啊,我们一般都是要通过result map来处理什么的,来处理咱们的多对一和一对多的关系的啊,这个大家注意好OK。
我来说两句