00:00
好,那我们再来看咱们的第二种方式叫做吉联方式,那吉联这个词大家应该之前在买be斯的时候应该就听说过,因为我们之前咱们在买杯体里面,咱们讲多对一的映射关系,我们在配置多对一的映射关系的时候,就有一种方式叫做集联。怎么写呀,大家想想是通过我们当前咱们的对象点属性来进行复制,大家还有印象没有,比如说我把这个标签咱们先给它注释掉,然后下面咱们在这呢,怎么写,大家看一下啊,然后是class,然后后边咱们通过点来访问它的属性来进行赋值,OK吧,在这咱们写个value,比如说我们写个2222。然后下面咱们再来写property,然后name等于class.c name,然后这个value咱们给它设置成这个叫远大前程班,哎,远大前程班OK啊行好,那我们现在这个就设置完了,那这个时候它好使不好使,大家注意它不好使,它跟我们之前呢,然后咱们讲的my be里面的吉联还不一样,My be里面咱们的吉联大家可以直接通过对象点属性跟我们当前咱们查询出来的某个字段映射,但是在这儿咱们是并不能在spring中,当我们来为一个类类型的属性赋值的时候,大家是不能直接来赋值的,比如说我现在我在这一个执行大家来看啊,你看它直接就报错了。
01:37
对吧?他报的错是什么?你看咱们就找这一句话,大家看好啊,Invalid,然后property class of being class,然后当前咱们的这个class属性的值是个啥?是个nu,所以说因为它是nu,那所以说我们在这能访问nu的CAD属性吗?你能访问nu c内属性吗?不能啊,所以说大家要想用集联的方式,那我们必须先干什么,你得先为当前的class进行赋值。
02:09
能看懂吧,或者说我们在这咱们可以为这个class进行一个实例化,实例化之后我们才可以来使用级联的方式。能听懂不,或者说我们在这儿可以先为它进行赋值,赋完值之后,那其实这东西就相当于把我们当前class里边的CAD和c name给进行了修改,大家说对不对,对吧,你看我们现在再来一个执行。好,这个地方输出的就是2222,然后c name是远大前程本OK吧,好,所以这种方式咱们用的不多,我们用的比较多的要么就是我们引用外部的币,就是我们刚才讲的第一种方式,要么就是我们马上要讲的第三种方式,叫做内部币,OK吧,好在这大家注意,咱们当前这种方式叫做集联,叫做集联的方式,对吧?好,然后但是咱们需要来保证什么,需要来保证提前,然后为咱们的可class属性,然后进行赋值,然后或者实例化,哎,或者实例化,这个大家注意,所以说这种方式用的并不多啊,那行,那下面呢,我们把这两个标签给它注释掉,然后下面咱们把这个标签也给注释掉,咱们来看咱们的第三种方式怎么写的,看好啊,在这咱们是property property啊property,然后是class,然后咱们在这。
03:36
这个标签里面,大家会发现里面有一个什么标签,有个病标签,大家注意,这就叫做内部病,这就叫做内部病,也就是说我们在当前property标签的内部去创建一个对象,然后专门来为当前的class属性赋值,OK吧,好,那它的ID咱们可以设置一个叫class in inner,哎,就是内部的一个class对象,它的class咱们就叫做class OK,好,那我们在这咱们怎么写呢?我直接把这两个标签复制过来,这个大家能看懂不?那因为我们要给,那我们创建完这个class对象之后,我们是不是要给当前里面的属性赋值,这样的话,咱们就不需要用class.c name,直接用CAD和c name就行。
04:25
能看懂不,因为我们当前这个B对应的是什么对象,Class对象嘛,所以说我们直接来为class里面的两个属性赋值就可以啊。好,那这个时候我们再来进行一个测试,我们来一个执行,大家会发现,哎,没有任何问题,对不对?好啊,那行,那这个是我们当前的一个内部B是在pro标签里面通过并in标签,然后来设置一个对象为当前的属性复制,那既然是内部并,那大家说这东西咱们能通过IOC直接来获取吗?内部病的话就跟咱们的内部类一样,是不是啊,那内部病是不是应该只能在我们当前咱们的这个bin的内部来使用,我们能不能通过IOC容器直接来获取呢?下面大家来看一下啊,好,那我们在这呢,咱们再来写一个,比如说我。
05:19
这个咱们a test啊,或者说咱们直接在这来写吧,这是来获取学生的,然后下面我们在这来获取一个班级叫做IOC,然后点get b,然后我们现在咱们的ID大家还记不记得叫class inner对不对,好,它的类型是class.class class好,咱们获得一个class对象,然后我们直接一个输出,大家看一下,你看你的内部变能不能直接通过IOC容器来获取啊,大家看一下诶。报错了,然后我们在这报的错叫no such be DeFinition exception,大家看一下,你看这个错,你认识不认识认识吧,我们之前咱们是不是就说过这个错误,还有一个叫no unique b DeFinition exception,一个是一个都没有,一个是匹配到了多个,所以说我们现在看到这个错之后,咱们再来看错误的描述就一目了然了,对不对?他说我们当前没有一个病叫什么克拉in了的病被发现可用,这是可用的意思,没有一个叫做class inner的病可用,对不对?
06:31
所以说大家记好,我们当前如果你用的是内部bin的话,那我们当前咱们的内部bin只能在bin的内部来使用,是无法通过IOC容器直接来获取的,OK吧,好,所以说咱们在这来写一下,大家注意这个是什么,这个叫做内部bin,叫做内部B对吧,然后它只能在咱们当前bin的内部,然后来使用,OK吧,好,然后不能直接通过咱们的IOC容器,然后来获取,好OK,那这是我们当前为类类型的属性赋值的三种方式,第一种引用外部的病,这也是咱们用的最多的啊,和这个内部病都是咱用的比较多的,而中间咱们的级联方式呢,大家注意,我们一般情况下都不用,因为这个时候咱们必须要提前为class属性赋值或者实例化,我们在这才可以。
07:31
用级联的方式OK吧,那你看我如果要提前给它赋值了,那这就不是,那这下面这个级联它就变成了一个修改的功能了嘛,对不对,好啊行,这是我们为类类型的属性赋值的这两种方式啊。
我来说两句