MyBatis关联查询,多对一与一对多


多对一查询:

表结构:

CREATE TABLE `teacher` (
  `id` INT(10) NOT NULL,
  `name` VARCHAR(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
)#教师表
CREATE TABLE `student` (
  `id` INT(10) NOT NULL,
  `name` VARCHAR(30) DEFAULT NULL,
  `tid` INT(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fktid` (`tid`),
  CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
)#学生表

实体类:

public class Student {
    private  int id;
    private String name;
    private Teacher teacher;
}

public class Teacher {
    private int id;
    private String name;
}

查询需求:(学生id,学生姓名,教师id,教师姓名)

sql语句:

select *from`student`, `teacher`where`teacher`.`id`=`student`.`tid`;

在mybatis中的接口:

public interface StudentMapper {
    public List getStudent1();
    public List getStudent2();
    public List getStudent3();
}

编写maper文件:

   
    
        
        
        
    
    


    
    
        
        
        
            
            
        
    

    
    
        
        
    

一对多查询:

实体类:

public class Student {
    private  int id;
    private String name;
    private int tid;
}
public class Teacher {
    private int id;
    private String name;
    private List studentList;
}

接口:

public interface TeacherMapper {
    Teacher getTeacherById1(@Param("tid") int id);
    Teacher getTeacherById2(@Param("tid") int id);
}

xml配置: