MyBatis 之 一对多 关联查询

MyBatis 中进行 一对多 关联查询的时候

我们以以一个例子为例: 查询一个班级里的所有学生

配置:

<!-- 一对多  -->
	<select id="queryClassAndStudent"  parameterType="int"  resultMap="class_student_map">
           select c.*,s.* from student s inner join studentclass c
          on c.classid = s.classid
          where c.classid= #{classId} 
	</select>
	<resultMap type="StudentClass" id="class_student_map">
	<!--返回班级类型 所以先写班级  -->
	   <id property="classid"  column="classid" />
	    <result property="className" column="className"/>
	     <!--ofType   一对多的特点  -->
	   <collection property="students" ofType="Student">
	    <id property="sno" column="sno" />
	    <result property="sname" column="sname" />
	    <result property="sage"  column="sage"/>
	   </collection> 
	</resultMap>

班级类:

注意我们要在班级类中 加入学生集合,和学生表建立关联。

测试类

 //一对多
   public static void queryClassAndStudent() throws IOException {

	      Reader reader = Resources.getResourceAsReader("config.xml");
	
	      SqlSessionFactory sqlSessionFactory = new  SqlSessionFactoryBuilder().build(reader);
	      
	      SqlSession session = sqlSessionFactory.openSession();
	     /* 1.实现接口
	      * 2.然后接口文件的名称 与 xml中的namespace形成映射 自动绑定配置
	      */
	      StudentMapper  studentmapper = session.getMapper(StudentMapper.class);
	    
	      StudentClass studentClass =   studentmapper.queryClassAndStudent(1);
        //遍历学生
	      List<Student> list =  studentClass.getStudents();
	      for(Student student: list)
	      {
	    	  System.out.println(student.getName()+"--"+student.getSage());
	      }
	    		  
	    //班级名		  
	      System.out.println(studentClass.getClassName());
	      session.close();
}

结果:

发布了69 篇原创文章 · 获赞 5 · 访问量 2218

猜你喜欢

转载自blog.csdn.net/qq_42139889/article/details/103388248