15.Mybatis多对一处理

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张图片

 

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"/>

       

      <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多对一处理_第2张图片

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

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多对一处理_第3张图片

你可能感兴趣的:(Mybatis,java)