MyBatis系列之高级结果映射之一对多查询

1. 一对多关系

教师可以教一个或多个的课程,这就意味着教师与课程之间的关系是一对多的。我们可以运用元素来获取一对多的关系。

教师的表信息如下:

STUD_ID NAME E-MAil PHONE ADDR_ID

课程表信息如下:

COURSE_ID NAME DESCRIPTION START_DATA END_DATA TUTOR_ID
public class Course {  
    private Integer courseId;  
    private String name;  
    private String description;  
    private Date startDate;  
    private Date endDate;  
    private Integer tutorId;  
    //setters & getters  
}  
public class Tutor {  
    private Integer tutorId;  
    private String name;  
    private String email;  
    private Address address;  
    private List courses;  
    //setters & getters  
}  

现在让我们来看一下如何难过教师的信息来获取更多的对应的课程信息。我们可以应用元素来映射多个课程的行的信息。与one-to-one的映射一样,我们可能应用Nested ResultMap和Nested Select来处理one-to-many。

2. 使用Nested ResultMap

我们可以应用下面的例子,来获取教师的信息连带着他所关联的课程信息。

  
      
      
      
      
      
  

  
      
      
      
     
      
  

 

3. 使用 Nested Select

我们可能使用select的查询,获取教师的信息关联他的课程信息。

  
      
      
      
      
      
  

  
      
      
      
      
      
  

  

  

在这个方法中,这个元素的select有名称放到了