1、表与表的联系类型 一对一(1:1) 一对多(1:n 或 n:1) 多对多(n:m ) 2、Mybatis 中实现多表查询的重要标签 resultMap 在 Mybatis 框架中,resultMap 标签可以表示两个表之间的一对多和一对一关系。 如:一个系可以有多个学生,如果想查询每个系的学生信息时,可以在DepartmentMapper.xml 局部配置文件中,使用 resultMap 标签进行如下配置: <resultMap id="departmentMap" type="cn.java.pojo.Department"> <!—定义主键--> <id property="dept_name" column="dept_name"/> <result property="building" column="building"/> <!—定义普通属性--> <result property="budget" column="budget"/> <!--配置一个包含关系 “有很多”关系,表达一对多联系 --> <collection property="students" ofType="cn.java.pojo.Student"> <id property="ID" column="ID"/> <result property="sname" column="name"/> <result property="sdept" column="dept_name"/> <result property="tot_cred" column="tot_cred"/> </collection> </resultMap> 如:一个系有一个系主任,如果想查询每个系的系主任信息时,可以在DepartmentMapper.xml 局部配置文件中,使用 resultMap 标签进行如下配置: <resultMap id="departmentMap" type="cn.java.pojo.Department"> <!—定义主键--> <id property="dept_name" column="dept_name"/> <result property="building" column="building"/> <!—定义普通属性--> <result property="budget" column="budget"/> <!—每个系有一个系主任,表达一对一联系--> <association property="Dean" javaType="cn.java.pojo.Dean"> <id property="id" column="did"/> <result property="name" column="name"/> </association> </resultMap> 重要标签或属性说明: <resultMap id="departmentMap" type="cn.java.pojo.Department"> 功能: resultMap: 进行多表查询的查询结果集说明; id: 给结果集命名,要唯一 type: 对应相应的实体类 <id property="dept_name" column="dept_name"/> 功能:定义该实体类的主键 property="dept_name" 定义在实体类中的主键的属性名 column="dept_name" 定义在关系表中的主键的字段名 <result property="building" column="building"/> 功能: 定义实体类的普通属性 property=" building " 定义在实体类中的普通属性名 column=" building " 定义在关系表中的普通字段名 <collection property="students" ofType="cn.java.bean.Student"> 功能:定义一对多关系,如一个系里有多个学生,定义多方的数据集合 property="students" 定义多方学生集合 ofType="cn.java.bean.Student" 定义对应的实体类 <association property="Dean" javaType="cn.java.bean.Dean"> 功能:定义一对一关系,如一个系对应一个系主任 3、MyBatis 框架的多对多联系的多表查询 多对多联系(n:m): 观察 student 表和 course 表,两个表之间的关系是多对多联系,即每个学生可以选修多门课,每门课程可以由多位学生学习; 第三方表: takes 表,该表存储学生选修某门课程的成绩数据; 注意:多对多联系一定涉及到 3 个表; 查询需求:查询每个学生选修的课程信息,及课程的分数。 请写出 SQL 查询语句。 在 Student 实体类中,添加一个 List<Course> courseList 属性: private List<Course> courseList; //表示某个学生的选课情况 为该属性生成相应的 get/set 方法; 在 Course 实体类中,添加一个 List<Takes> takeList 属性: private List<Takes> takesList; //表示某门课程的分数情况 为该属性生成相应的 get/set 方法; 编写 sql 映射文件 StudentMapper.xml <!--定义结果集:学生的多个选课及每门课程的分数--> <resultMap id="StudentCourseTakesMap" type="cn.java.pojo.Student"> <id property="id" column="ID"/> <result property="name" column="name" /> <result property="deptName" column="dept_name" /> <result property="totCred" column="tot_cred" /> <!--选修多门课程--> <collection property="courseList" ofType="cn.java.bean.Course"> <id property="courseId" column="course_id"/> <result property="title" column="title"/> <result property="deptName" column="dept_name"/> <result property="credits" column="credits"/> <!--每门课程有多个成绩--> <collection property="takesList" ofType="cn.java.bean.Takes"> <id property="id" column="ID"/> <id property="courseId" column="course_id"/> <id property="secId" column="sec_id"/> <id property="semester" column="semester"/> <id property="year" column="year"/> <result property="grade" column="grade"/> </collection> </collection> </resultMap> <select id="getStudGrade" resultMap="StudentCourseTakesMap"> SELECT * FROM student,takes,course WHERE student.`ID`=takes.`ID` AND course.`course_id`=takes.`course_id` </select>
标签:实体类,多表,定义,查询,course,MyBatis,属性 From: https://www.cnblogs.com/qiqi-yi/p/17276790.html