[Mybatis]5.多对一、一对多


例子为5个学生,对应1个老师。
表结构为:

student的tid为外键,关联teacher的id。

多对一

现要查询所有学生,附带上老师的信息(包括姓名)。可以用两种方式,1.嵌套处理结果集映射 2.嵌套处理查询

1.写实体类

Student实体类:

    private int id;
    private String name;
    private Teacher teacher;

Teacher实体类

    int id;
    String name;

2.写xml

方法一 嵌套处理结果集映射
    
    
        
        
        
            
            
        
    

为联合,用于映射一个对象(Teacher),使用javaType来指定对象

方法二 嵌套处理查询

先写

    
    
        
        
        
    

再写

    

也就是先查询到了tid,然后使用tid再去查询老师的name。

一对多

现要查询一个老师,附带上他所带的所有学生的信息。同样可以用两种方式,**1.嵌套处理结果集映射 2.嵌套处理查询 **

1.写实体类

Student实体类:

    private int id;
    private String name;
    private int tid;

Teacher实体类

    int id;
    String name;
    private List students;

2.写xml

方法一 嵌套处理结果集映射
    
    
        
        
        
            
            
        
    

),使用ofType来指定集合中对象的类型

方法二 嵌套处理查询

先写

    
    
        
    

再写

    

也就是先查询到了老师的id,然后使用id再去查询学生的信息。

总结:

多对一(映射一个对象)使用association,一对多(映射集合)使用collection
javaType用来指定实体类中属性的类型
ofType用来指定映射到集合中pojo类型