一对多
一个老师对应多个学生
图示
包结构
1;建数据库
学生:
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`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
老师:
CREATE TABLE `teacher` (
`id` INT(10) NOT NULL,
`name` VARCHAR(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
2:实体类
学生
public class Student {
private int id;
private String name;
//学生需要关联一个老师
private int tid;
}
老师
@Data
public class Teacher {
private int id;
private String name;
//老师管理的学生集合
private List<Student> students;
}
3:接口
TeacherMapper
public interface TeacherMapper {
//根据id查询老师
Teacher getTeacher(@Param("tid") int id);
}
TeacherMapper.xml(通过结果来进行查询,然后将结果映射到Student类中)
<!--结果集映射-->
<select id="getTeacher" resultMap="StudentTeacher">
select s.id sid,s.name sname,t.id tid,t.name tname
from mybatis.student s,mybatis.teacher t
where s.tid =t.id and t.id=#{tid}
</select>
<resultMap id="StudentTeacher" type="Teacher">
<result property="id" column="tid"/>
<result property="name" column="tname"/>
<collection property="students" ofType="Student">
<result property="id" column="sid"/>
<result property="name" column="sname" />
<result property="tid" column="tid"/>
</collection>
</resultMap>
结果