00:00
好,那下面呢,我们就来讲一下该如何为集合类型的属性复制,那咱们常用的集合类型就是list还有map,好,那我们下面咱们就把这两个呢来写一下,首先咱们先来看list啊,那我们来模拟一个环境,那我们当前咱们的学生对班级是多对一,那班级对学生呢是一对多,那我现在我要在班级的实体类中来表示当前班级里面所有的学生,大家说怎么表示,咱们在买杯的时候就讲过对一对应对象,最多对应集合,所以说我们在这需要设置一个private,然后list里面咱们写什么,写student就行啊,好,下面咱们就叫做student,然后来为他设置set跟get方法。来。好,然后还有就是来重写我们当前的to string方法在哪呢?啊在这呢啊好OK。行,那我们现在把这些东西都做完之后啊,那我们去找到咱们的一个class,比如说咱们就拿着这个class one来做例子呗,行吧,好,然后大家看一下下面咱们是不是还需要来为咱们的students来扶持,对不对,那这个时候怎么办,大家想想。
01:16
咱们现在是不是要为students这个list集合类型的属性进行赋值,怎么办?首先你能用value,不能肯定不行,因为如果咱们用value的话,Value是不是应该扶持的是一个字面量类型。对吧,所以说不能用value,那我们怎么做呢?大家注意,我们有两种方式,首先第一种方式的话,我们可以在这个地方啊,然后通过哪个通过哪个标签,通过list标签,然后直接来为list集合类型的属性赋值,然后咱们list标签里面写什么,这就是我们刚才说的问题,它跟数组一样,里面呢都是一条一条的数据,那所以我们就可以用两个标签,一个叫value,一个叫做ref,如果说你要用value的话,那我们主要那我们当前list集合里面存储的数据应该是字面量类型,而如果list里面咱们存储的是类类型,就比如说咱们这个student,那student里面存的是什么?存的是student类型的数据,那所以咱们在这就要干啥呀,来通过ref标签,然后来引用我们当前咱们的某一个学生的B,然后来为集。
02:30
和中的每个数据复持OK吧,好,这里面咱们写个B,你看这里面是不是可以选呢?比如说student one复制复制,然后咱们下面还有student two对吧,然后还有three OK,比如说现在咱们的student里面这个集合里面一共几个学生信息,三个学生大家看一下student one在这呢,这是student two对吧,然后下面这个是student three,没问题吧,好,OK,那我们再来找到咱们的测试类。
03:02
好,大家看一下,然后我们在这再写一个,比如说我把这两个给它注释掉,然后我们下面呢,咱们这个通过IOC,然后来获取我们当前的一个class,这个class咱们的ID叫什么,大家记不记得叫class one。大家看一下啊,是不是叫做class one对吧?然后它的类型是什么,是不是应该是class.class好,获取了之后我们就可以把它给输出了,然后大家来看一下我们当前咱们的这一个学生班级信息里面的这个学生集合,看它有没有值啊好。来大家看,你看啊,这是我们当前咱们的班级,他的CAD是1111,班级名称是最强王者班对吧?然后这个学生大家看一下,因为咱们写的是studentone student two,还有student three studentone里面咱们是没有来为属性进行复值的,大家看一下啊,所以说大家看每个属性是不是都是那啊,然后呢,第二个是咱们的这个student two,然后它的sid是1001,大家看一下有问题没有,没有问题,然后还有一个student three,然后这里面是1002李四大家看。
04:18
没有问题吧,好,这就是我们当前为list的集合类型的属性赋值,那我们当前咱们用的是什么方式呢?大家注意这个叫做内部的list的集合,也就是说我们当前咱们是为通过咱们的list的标签来为我们当前咱们的一个list的集合类型的属性进行赋值的,那我们有没有其他方式,大家注意是有的,什么其他方式叫做引用list集合类型的B。哎,大家想想,这其实这也是一个类类型的属性啊,那我们是不是可以在标签里面来复制,这叫做内部并来扶持,那我们是不是也可以来引用引用我们当前的,如果说我们当前咱们的IOC容器中有一个类似集合类型的B,那大家说我们在这,而且它的类型也是能够对应上的,对吧,能够匹配的,那我们是不是直接用一个ref来引用就行,OK吧,好啊好,但是呢,大家看好。
05:17
你看我们在这咱们去写个B,然后它的class咱们写成什么叫A。对不对?大家看一下啊,Aist AR a,然后你写个aist,这样行不行,这不太对吧,为什么呀?因为我们来创建了一个病之后,我们现在要创建的是一个list的集合类型的并,那我们最主要的是往list的集合里面去存储数据,这个大家能听懂吧?但是你在这如果你专门去配置一个B,它的类型是a list,那你会发现我们能做的只是来为当前这个类中的属性赋值,你能通过这个并标签往咱们当前的这个集合,往咱们当前这个集合里面去存储数据吗?大家注意不行啊,所以说呢,咱们在这能用这个B标签设置一个集合类型的B吗?不能,哎,我们需要用到的是谁?大家注意,我们在这儿就需要用到一个新的约束了。
06:19
大家注意啊,咱们要来配置一个叫做集合类型的B,然后咱们需要使用看好叫做U的约束。哎,叫做U求的约束,那我们先来看啊,比如说我们当前咱们上这是咱们的约束,咱们上面这个约束只有谁呀,病死的约束对不对?大家看一下啊,只有这个病死的约束,那我们现在咱们需要用的是谁?用的是U的约束,那我们该怎么去添加这个约束,那关键咱们也不知道他长啥样啊是不是?咱们也不知道这东西该怎么写呀。对吧,它还不像eclipse啊,Eclipse里面它在这儿就是它在咱们的配置文件中会给我们一个复选框,这个复选框你选哪个你就可以来使用哪一个约束,但是咱们的idea里面也没有这东西啊,那这个时候怎么办,大家注意直接用。
07:15
直接用啊,直接用之后,然后它就会自动将咱们的约束给导入进来,你比如说我现在我要来使用的是uti冒号刚好叫叫做list。咱们要使用的标签叫U冒号list,大家注意啊,然后这东西呢,是一个前缀,为什么我们要加前缀?因为我们当前咱们的IOC容器所对应的配置文件里面,咱们可以来引入好多约束,那所以咱们不敢保证这些约束里面没有相同名字的这个标签啊,比如说这里面有list,那咱们其他的约束里面也有list,那你说如果没有这个前缀,你用的list到底是哪个约束里面的list呢?大家想想是不是有的老师,那我不会换个名字吗?但是大家想啊。
08:06
咱们学,咱们学了Java之后,我们所有的起名的方式,是不是全部都是要见名实义的。对吧,那我要表示一个list的集合,那我就是要叫list,那我还能叫啥。对不对,所以说在这大家看好这个U冒号是这个标签的前缀,为了来解决什么问题,为了来解决咱们标签重名的问题,就比如说咱们以后在spring mvc中,然后咱们会用到一个标签,叫做a naation-driver,叫做注解驱动,然后这个标签大家注意在MVC里面有,在咱们的事物里面也有,所以说我们就一定要把它的前缀给设置好,然后来引入我们当前咱们所对应的约束,大家看好啊,你不要选错了,最起码咱们当前这个U里面,它所对应的约束就只有这一个,也就是说叫做list标,叫做list的这个标签,只有咱们当前这个约束里面会有,知道吧,这样的啊,所以大家也不需要去选,你直接把它给写出来,它就有提示,咱们在这来一个回车,就可以了,来咱们再跑到上边大家看一下啊,来咱们往后边拉一下,大家注意,你看刚才咱们看到的这个约束是不是只。
09:19
一个病啊,现在是不是就有了一个要求,那这个时候咱们就可以直接来使用了,知道吧,如果说大家看我把它给撤销一下,你看。如果你没有引入这个约束,我们当前直接来使用这个标签,它是会报错的,那这个时候怎么办呢?大家看好,你把它给放在我们当前报错的这个位置,光标放在报错的位置,然后我们通过alt加enter也是可以来引入我们当前咱们的这个约束的,知道吧,你看,然后大家看一下啊,看这两个分别是什么。好,他还拉不了啊。好,那咱们还是这样去写吧,老老实实的填括号,因为刚才那个框太小了,后边那个东西咱们看不见啊,然后呢,我们还是utilu u,然后冒号list就完事了,咱们就这样去找是最方便的,知道吧,好啊,行,然后list,然后写完之后大家注意这里面我们可以设置一个ID,你设置了ID是什么唯一标识嘛,那咱们说的引用某一个病的时候,那我们当前不就是根据ID来引用的吗?对不对,比如说这个咱们叫啥,就叫student,就叫student list吧,行吧,然后大家来看怎么写呢?简单里面直接用谁ref来引用就行,看到了没?
10:40
因为我们当前创建的这个东西就是一个list集合,所以说我们最重要的是往list集合里面来存储数据,Ref,然后它的b student one OK,然后student to。好,然后再往下student three就可以啊来。
11:00
像这个时候大家注意它的效果就是一样的,那我们现在这个东西咱们设置完之后,我该怎么去用呢?大家看好,我把它给注释掉,然后我们现在咱们再通过咱们的property标标签来为students进行赋值,直接用谁ref来引用就行,引用哪个student list OK完事啊。行,所以说这个就叫什么叫做集合类型的病,但是前提大家一定要有咱们U求的约束,如果说没有这个约束,大家注意你这个标签你根本都用不了,就像是我刚才我撤销了之后,大家会发现这东西直接报错,知道吧,所以说一定要看好啊好,下面呢,我们在这咱们再来一个测试,大家看一下啊,你看跟咱们刚才看到的效果一样不一样,一模一样啊。行,所以说咱们为list集合类型的属性来进行赋值的两种方式,一种呢,咱们可以直接在property里面通过list标签来进行赋值,然后我们也可以来配置一个集合,List的集合类型的病,但是它需要用到咱们的YouTube的一个约束,这个大家一定要注意啊,好。
我来说两句