00:01
那对于我们这个啊,我们这个关联对象查询啊,我们就说了。这样的话呢,我们可以有分布查询,大家也可以定义嵌套结果集的方式,哎,都行,把这种方式呢,大家都练一下。那接下来呢,哎,以上这些呢,就是我们讲了association。我们知道。你关联的如果是一个对象的话,还可以用ASOC。定义。现在呢,假设我这个对象啊,我关联的这个对象也是一个集合。正好我们这个员工跟部门你看啊,一个员工会对应一个部门,但是一个部门下会有很多员工,我现在再变一下。查部门的时候,给我把当前部门下的所有员工也拿出来。Private。
01:00
哎,那么所有员工呢,就是一个list了。我把所有的employee PS好拿出来。G。我们来看啊。我查部门的时候,把所有员工也拿出来,现在我们看这个就非常难了,怎么做?场景二。哎,我们之前说的那一堆都是场景一,我们关联了一个对象,哎,现在呢,咱们这个查询部门的时候,哎,将。咱们这个部门对应的。对应的所有所有。员工信息。查询出来。啊,那么这样的话呢,怎么做,我们就来到这个部门里边定义的时候我们来做。
02:01
我们在部门方法里边写一个增强版的查部门方法。这个查部门呢。他获取的是一个部门。8ID。把ID增强版的啊,这个增强版的,它里边还能把当前部门里边所有的员工都查出来。哎,上面这个是不行的啊,这是一个最简单的,那在这里边呢,我们来定义一下。我们来看要实现这个方法。怎么办?克莱克的这个内容,哎。这个呢,哎这一块的讲解,咱们这个注释,哎注释呢,我们在,哎我们这个。Dept map中啊,大家来这个map中看啊,好,我们来这个map中来说这个事。好,返回值,哎,我也不result type了,Type肯定就不行了。现在我们要的结果。
03:01
来。我们部门里边有这么三个属性。你查出来怎么给我封装正确?我们来看。这样我们先来写查询还是select。Select。From。这块呢,不能芯,那就这两个,我们把这个拿过来。但是现在来想啊。我要这么写的话,只能查出部门员工是都不行的,借鉴我们学association,我们第一种写法。我们进行多表联查。我们呢,From我们来写两张表,从我们这个TBL杠,De PT这张表里边查,那么这个呢,就叫D表。我还left join,哎,我们这次呢写left join left join,我们TBL-employ这张表。
04:02
好,我们双表联查。哎,这是一表,我们查的话呢,是查D表的ID字段。哎,我们就叫did和D表的part。De PT name字段啊,我们把这个低表打开好,第PT name字段我们也叫de PT高内。啊。这是D表里边要查的内容,一表里边我们要查的也放在这,我们要查一表里边的。ID,哎,我们就叫EID。和仪表里边的last name。然后呢,我们。就叫。好,我们都起成个列名一样,然后呢,还有仪表里边的email。那我们也叫email。还有。仪表里边的,真的。啊,我们也叫真的啊,这是我们要查的一表的数据。
05:03
啊,这两张表连查连查的条件呢?哎,条件是什么。Left join这个join的条件,哎,就是我们。地表的。ID应该是E表的department ID,哎,仪表里边有一个地杠ID进行关联的。好,然后呢,我们的查询条件,Where查询条件呢,就是地表,因为我们是查部门的,就说呢,查询条件是我们的部门ID,等于我们传过来的值。啊,一号部门,如果我们运行这条查询走。哎,我们哪里写错了,看一下啊。哦,我们这儿少了一个逗号。好,你看啊,这是我们部门信息部门里边呢,哎,一号部门有两个员工,我们能查出来两条记录,嗯。哎,但是呢,前面这两个一样是部门信息。
06:01
好,Circle,语句是写好了,放在这儿。好,就不用这个色了,用我们写的这个circle,我们是多表连查。好,这样连查,从这张表里边好left join。啊。好ID就是我们传进来的ID。那返回值呢,我们就来定义就行了。Map,好,Type,我们要封装对象。走。ID,我们就叫MYPT。接下来我们来看封装结果,这个查出来的结果有这么多字段,来看每一个字段如何对应封装。好,上面这是扎va b的属性,下边呢,数据库对应的一些字段正好我们来对应起来,看怎么封装。
07:02
ID好,首先ID我们查的是部门。部门的话呢,Did这一列就是主见。它呢,Property是我们部门的ID属性。好,接下来呢,还有一个。De PT name。Column。哎,DPT这一列呢。它对应我们部门这个对象里边的,哎,咱们这个department。对应它。那么呢,还有。我们这个C。那这一块呢,还有EID,关键你看啊。这一块相当于是不是都是员工啊,所以说呢,整个列从这分割开始,这都是员工的信息了。而我们的员工是一个集合,那么接下来就不能用这些定义了,你也没办法,Result集联属性的,什么ERP,哎,什么你没法几联啊,这是一个集合。
08:08
好,接下来定义集合就使用这个标签,Collection是用来定义对象的collection。定义集合类型的属性。封装规则。定义关联的咱们这个集合类型的属性封装规则。好,就是说我们这个EMS是一个集合,那么这个集合里边我们得告诉MY集合里边每一个元素的类型。我们要把这些记录封装成employee对象。接下来使用这个标签叫哎,Offtime。这是是集合里边元素的类型,不用Java type指定啊,这是指定。集合里面元素类型好,类型呢,就是我们m employ e对象,我来把m employ e的权利面。
09:08
当然用别名也行,我们还是推荐用。接下来我们再在collection里边定义。定义。这个集合中啊。元素的封装规则。好,集合里边都是一个个的employee对象,那么接下来我来定义。还是一样,Employee对象EID,对于employee对象来说,它是ID属性啊,这么来定义。好,对应的就是我们employee对象的ID属性。好普通的结果,哎,接下来last name这一列。对应的呢,就是我们,嗯。
10:00
扎逼里的拉name属性。其他普通的列。Email。Chrome email它呢对应的就是。那我们这个email。Result。C。哎,我们这个真的这一列对应的呢,就是我们property。好,我们来看啊,现在我把这个查询写好了,我们来测试。写一个新的测试方法。看一下几何类型的属性能不能取出来封装正确。好。还是一样,先get CIRC,拿到我们CIRC factory。然后呢,再从这个circle session中open session。
11:00
老套路。好,我们来还是放在。串山的铝块中。快。Finally。好,我们来从session中点get member拿到department。拿到这个。好,拿到它,我们来调用它的这个查询方法。Get。来调用它的这个复杂,哎,增强版的plus版的查询方法好。然后呢,我们就来输出。输出一下咱们这个department对象的内容,以及把这个department对象里边。的所有员工我也拿出来。把这个session关掉。
12:01
我们来测试一下行不行,哎,我们看我们这一块封装好。买PT,好,这是我们的封装规则,指定为买PT。测试。走。诶,我们来看。通过了。部门的信息也查询正确,包括里边员工和一号员工,Tom在一号部门和六号员工,杰瑞二也在一号部门。也完成了好。这样的话呢,就是我们使用collection,这也是嵌套结果集的方式。Collection。嵌套啊。我们把这种称为嵌套结果集的方式,然后呢,定义咱们这个关联的。集合类型元素的封装规则。
13:02
封装规则。好,第二封装规则,哎,我们就定义好了。
我来说两句