一对一用assosiation用javaType
多对多用的是collection,用的是ofType
一对一
<resultMap type="Classes" id="getClassMap">
<id property="id" column="c_id"/>
<result property="name" column="c_name"/>
<association property="teacher" javaType="Teacher">
<id property="id" column="t_id"/>
<result property="name" column="t_name"/>
</association>
</resultMap>
在Cunstomer类中加入Orders orders类型的属性并生产get、set方法
一对多
<resultMap type="com.yc.m.Customer" id="resultCustomerMap">
<id column="id" jdbcType="INTEGER" property="id" />
<result property="address" column="address"/>
<result property="postcode" column="postcode"/>
<result property="sex" column="sex"/>
<result property="cname" column="cname"/>
<collection property="orders" ofType="com.yc.m.Orders">
<id property="id" column="id"/>
<result property="code" column="code"/>
</collection>
</resultMap>
collection property="orders" ofType="com.yc.m.Orders">
<id property="id" column="id"/>
<result property="code" column="code"/>
</collection>
</resultMap>
在Cunstomer类中加入List<Orders> orders类型的属性并生产get、set方法
多对多
public class Course {
private Integer id;
private String courseCode; // 课程编号
private String courseName;// 课程名称
private List<Student> students;// 选课学生
// get/set
public Course() {}
public Course(Integer id, String courseCode, String courseName) {
super();
this.id = id;
this.courseCode = courseCode;
this.courseName = courseName;
}
public Course(Integer id, String courseCode, String courseName,
List<Student> students) {
this.id = id;
this.courseCode = courseCode;
this.courseName = courseName;
this.students = students;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCourseCode() {
return courseCode;
}
public void setCourseCode(String courseCode) {
this.courseCode = courseCode;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public String toString() {
return "Course [id=" + id + ", courseCode=" + courseCode
+ ", courseName=" + courseName + ", students=" + students
+ "]";
}
}
Course {
private Integer id;
private String courseCode; // 课程编号
private String courseName;// 课程名称
private List<Student> students;// 选课学生
// get/set
public Course() {}
public Course(Integer id, String courseCode, String courseName) {
super();
this.id = id;
this.courseCode = courseCode;
this.courseName = courseName;
}
public Course(Integer id, String courseCode, String courseName,
List<Student> students) {
this.id = id;
this.courseCode = courseCode;
this.courseName = courseName;
this.students = students;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCourseCode() {
return courseCode;
}
public void setCourseCode(String courseCode) {
this.courseCode = courseCode;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public String toString() {
return "Course [id=" + id + ", courseCode=" + courseCode
+ ", courseName=" + courseName + ", students=" + students
+ "]";
}
}
public class Student {
private Integer id;
private String name; // 姓名
private String gender; // 性别
private String major; // 专业
private String grade; // 年级
private List<Course> courses;// 所选的课程
public Student(Integer id, String name, String gender,String major, String grade, List<Course> courses) {
super();
this.id = id;
this.name = name;
this.gender = gender;
this.major = major;
this.grade = grade;
this.courses = courses;
}
public Student(Integer id, String name, String gender, String major,
String grade) {
super();
this.id = id;
this.name = name;
this.gender = gender;
this.major = major;
this.grade = grade;
}
public Student() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public List<Course> getCourses() {
return courses;
}
public void setCourses(List<Course> courses) {
this.courses = courses;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", gender="
+ gender + ", major=" + major + ", grade=" + grade
+ ", courses=" + courses + "]";
}
}
Student {
private Integer id;
private String name; // 姓名
private String gender; // 性别
private String major; // 专业
private String grade; // 年级
private List<Course> courses;// 所选的课程
public Student(Integer id, String name, String gender,String major, String grade, List<Course> courses) {
super();
this.id = id;
this.name = name;
this.gender = gender;
this.major = major;
this.grade = grade;
this.courses = courses;
}
public Student(Integer id, String name, String gender, String major,
String grade) {
super();
this.id = id;
this.name = name;
this.gender = gender;
this.major = major;
this.grade = grade;
}
public Student() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public List<Course> getCourses() {
return courses;
}
public void setCourses(List<Course> courses) {
this.courses = courses;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", gender="
+ gender + ", major=" + major + ", grade=" + grade
+ ", courses=" + courses + "]";
}
}
<!-- 这里使用了嵌套结果ResultMap的方式进行级联查询,当然也可以使用嵌套查询select -->
<!-- 映射一个基本的Student查询结果 -->
<resultMap id="StudentResult" type="Student">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="gender" column="gender"/>
<result property="major" column="major"/>
<result property="grade" column="grade"/>
</resultMap>
<!-- 继承上面那个基本的映射,再扩展出级联查询 -->
<resultMap id="StudentResultWithCourses" type="Student" extends="StudentResult">
<collection property="courses" resultMap="CourseResult"></collection>
</resultMap>
<!-- 这里特别要是的是column="cid" 这是和select语句中的 c.id as cid对应的 一定一定一定要对应起来 -->
<resultMap id="CourseResult" type="Course">
<id property="id" column="cid"/>
<result property="courseCode" column="course_code"/>
<result property="courseName" column="course_name"/>
</resultMap>
<!--
注意:查询语句的中的c.id as cid这个地方,避免名字相同出现查询结果不正确的情况
同时在id="CourseResult"的resultMap中也有与这里对应的设置要特别特别注意
-->
<select id="getStudentByIdWithCourses" parameterType="int" resultMap="StudentResultWithCourses">
select s.id,s.name,s.gender,s.major,s.grade,c.id as cid,c.course_code,c.course_name,sc.id,sc.student_id,sc.course_id
from student s,course c,student_course sc
where
s.id=#{id}
and
s.id=sc.student_id
and
sc.course_id=c.id
</select>
collection property="courses" resultMap="CourseResult"></collection>
</resultMap>
<!-- 这里特别要是的是column="cid" 这是和select语句中的 c.id as cid对应的 一定一定一定要对应起来 -->
<resultMap id="CourseResult" type="Course">
<id property="id" column="cid"/>
<result property="courseCode" column="course_code"/>
<result property="courseName" column="course_name"/>
</resultMap>
<!--
注意:查询语句的中的c.id as cid这个地方,避免名字相同出现查询结果不正确的情况
同时在id="CourseResult"的resultMap中也有与这里对应的设置要特别特别注意
-->
<select id="getStudentByIdWithCourses" parameterType="int" resultMap="StudentResultWithCourses">
select s.id,s.name,s.gender,s.major,s.grade,c.id as cid,c.course_code,c.course_name,sc.id,sc.student_id,sc.course_id
from student s,course c,student_course sc
where
s.id=#{id}
and
s.id=sc.student_id
and
sc.course_id=c.id
</select>