1.查询所有学生信息以及对应的老师(多对一)
1.1. StudentMapper接口编写查询方法
Public interfaceStudentMapper{
//查询所有学生信息以及对应的老师信息
Public List<Student>getStudent();
}
1.2.StudentMapper.xml文件编写sql查询语句
<select id="getStudent" resultType="Student">
Select s.id,s.name,t.name
from student s,teacher t
where s.tid=t.id;
</select>
1.3.MyTest测试类编写测试方法
@Test//查询所有学生信息以及对应的老师
Public void getStudent(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
List<Student> students=studentMapper.getStudent();
for(Student student:students){
System.out.println(student);
}
sqlSession.close();
}
1.4.测试结果

1.5如何解决Teacher=null?
方法一:子查询
1.5.1 查询所有的学生
1.5.2 根据查询出来的学生的tid寻找对应的老师 (子查询)
1.5.3 更改StudentMapper.xml的sql查询语句
<select id="getStudent" resultMap="StudentTeacher">
select * from student;
</select>
<resultMap id="StudentTeacher" type="Student">
<result property="id" column="id"/>
<result property="name" column="name"/>
<!--
复杂的属性单独处理:
对象:assocition
集合:collection
-->
<association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
</resultMap>
<select id="getTeacher" resultType="Teacher">
select * from teacher where id=#{id}
</select>
1.5.4 运行结果

方法二:连表查询 按照结果嵌套查询
1.5.1 注释StudentMapper.xml的方法一sql查询语句
<!--方法二:结果嵌套查询-->
<select id="getStudent"resultMap="StudentTeacher">
select s.id sid,s.name sname,t.name tname
from student s,teacher t
where s.tid=t.id;
</select>
<resultMap id="StudentTeacher" type="Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<association property="teacher" javaType="Teacher">
<result property="name" column="tname"/>
</association>
</resultMap>
1.5.2 测试结果

相关文章: