//學生po public class Student { //學生id 主鍵 private Long id; //學生姓名 private String name;
//getter and setter ... }
//老師po public class Teacher { //老師id 主鍵 private Long id; //老師姓名 private String name;
//getter and setter ...
}
//老師 vo public class TeacherVO extends Teacher { //學生list 因為 教師:學生 = 1 : n private List<Student> students;
// getter and setter ...
}
//關系表po
public class Relation { /* 主鍵 */ private Long id; /* 學生id */ private Long sid; /* 教師id */ private Long tid; // getter and setter ... }
通過關系表,連接學生表和教師表,根據id獲取各自的姓名,基本業務:查詢所有老師下的所有學生
手繪的...湊合看吧 哈哈,因為一個老師下有多個學生,所以在老師的實習類里聲明一個學生list屬性,就像上述代碼一樣,建立一個Vo去繼承老師的實體類,下面的mapper代碼是重點:
//關系表 Mapper接口
public interface RelationMapper { @Select("select id,name from TEACHER") @Results({@Result(property = "id",column = "id"), @Result(property = "name",column = "name"), @Result(property = "students",javaType = List.class,column ="id", many = @Many(select = "com.example.mapper.RelationMapper.findStudents"))}) List<TeacherVo> findTeacherAndStudents(); @Select("select s.name from RELATION r,STUDENT s where s.id = r.sid and r.tid = #{tid}") List<Student> findStudents(Long tid); }
@Select("select id,name from TEACHER") 中的id 通過 @Result(property = "students",javaType = List.class,column ="id",傳到 many = @Many(select = "com.example.mapper.RelationMapper.findStudents"))})
在 List<Student> findStudents(Long tid) 中接到傳遞過來的id 並賦值給sql語句中 #{tid}
這樣就完成了,老師學生通過關系表完成1對多。
在對應的實現類中,實現findTeacherAndStudents()方法即可,控制層同理~