package com.mybatis.in;
public class ClassRoom {
private String roomId;
private String roomName;
private float area;
public String getRoomId() {
return roomId;
}
public void setRoomId(String roomId) {
this.roomId = roomId;
}
public String getRoomName() {
return roomName;
}
public void setRoomName(String roomName) {
this.roomName = roomName;
}
public float getArea() {
return area;
}
public void setArea(float area) {
this.area = area;
}
}
package com.mybatis.in;
public class Course {
private String courseId;
private String courseName;
private String courseType;
private ClassRoom classRoom;
public String getCourseId() {
return courseId;
}
public void setCourseId(String courseId) {
this.courseId = courseId;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public String getCourseType() {
return courseType;
}
public void setCourseType(String courseType) {
this.courseType = courseType;
}
public void setClassRoom(ClassRoom classRoom) {
this.classRoom = classRoom;
}
public ClassRoom getClassRoom() {
return classRoom;
}
}
下面创建一个接口
package com.mybatis.in;
import java.util.List;
public interface CourseMapper {
public List<Course> getCourses();
public List<Course> getCoursesClassRoom();
}
下面创建一个映射文件
<resultMap type="ClassRoom" id="classRoom">
<id property="roomId" column="roomId"/>
<result property="roomName" column="roomName"/>
<result property="area" column="area"/>
</resultMap>
<resultMap id="courseClassRoom" type="Course">
<id property="courseId" column="courseId"/>
<result property="courseType" column="courseType"/>
<result property="courseName" column="courseName"/>
<association property="classRoom" resultMap="classRoom"></association>
</resultMap>
<!-- configuration for the SQL -->
<select id="getCoursesClassRoom" resultMap="courseClassRoom">
<![CDATA[select c.courseId courseId,c.courseType courseType,c.courseName courseName,
room.roomId roomId,room.roomName roomName,room.area area
from course c inner join classroom room
on c.roomId=room.roomId]]>
</select>
我们要对这个配置进行关键的讲解,其中的association配置就起到了映射的作用,相信大家也看的明白,下面我们讲一下association还有其他几种配置方式,
一种就是不要resultMap属性,然后在association中间进行配置,和resultMaper一样的配置方式。association还有两个重要的属性一个javaType,还有一个columnPrefix,对于javaType,就是你可以再javaBean中定义一个抽象的类型,然后在查询的时候决定使用哪一个具体的类型。columnPrefix的作用就是,对于resultMap中所有的column可以再SQL中添加一个prefix达到区分的作用。