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.测试结果

15.Mybatis多对一处理

 

1.5如何解决Teacher=null

方法一:子查询

1.5.1 查询所有的学生

1.5.2 根据查询出来的学生的tid寻找对应的老师 (子查询)

1.5.3 更改StudentMapper.xmlsql查询语句

<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 运行结果

15.Mybatis多对一处理

方法二:连表查询 按照结果嵌套查询

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 测试结果

15.Mybatis多对一处理

相关文章: