- 多个学生,对应一个老师
- 但是对于学生这边而言,关联,也就是多个学生关联一个老师【多对一】
- 对于老师而言,集合,一个老师教很多学生【一对多】
创建实体类
@Data
public class Student {
private int id;
private String name;
//学生关联一个老师
private Teacher teacher;
}
@Data
public class Teacher {
private int id;
private String name;
}
创建接口
public interface StudentMapper {
//查询所有学生信息,以及对应的老师信息
List<Student> SelectAllStudent();
}
public interface TeacherMapper {
@Select( "select * from teacher where id = #{id}" )
Teacher SelectByIdTeacher(@Param( "id" ) int id);
}
绑定mapper接口
<mappers>
<mapper resource="com/RXJ/mapper/StudentMapper.xml"/>
<mapper resource="com/RXJ/mapper/TeacherMapper.xml"/>
</mappers>
按照查询嵌套处理
<!-- 复杂的属性我们需要单独处理 对象:association 集合:collection-->
<select id="SelectAllStudent" resultMap="StudentAndTeacher">
select * from student
</select>
<resultMap id="StudentAndTeacher" type="Student">
<result property="id" column="id"/>
<result property="name" column="name"/>
<association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
</resultMap>
<select id="getTeacher" resultType="Teacher">
select * from teacher where id=#{id}
</select>
按照结果嵌套处理
<select id="SelectAllStudent" resultMap="StudentAndTeacher">
select s.id sid,s.name sname,t.name tname
from student s,teacher t
where s.tid = t.id
</select>
<resultMap id="StudentAndTeacher" type="Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<association property="teacher" javaType="Teacher">
<result property="name" column="tname"/>
</association>
</resultMap>
测试
@Test
public void testStudent(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
StudentMapper mapper = sqlSession.getMapper( StudentMapper.class );
List<Student> students = mapper.SelectAllStudent();
for(Student student:students){
System.out.println(student);
}
sqlSession.close();
}