您的位置:首页 > 其它

mybatis高级映射:一对多

2017-09-09 21:06 330 查看
说一下mybatis的复杂映射:一位老师可以教多个课程,但是一个课程只有一位老师

老师表:



课程表:



DAO 层写个方法:像配置数据源,mybatis的SessionFactory,jdbc.properties和一些扫描包啥的就不贴代码了。

public interface TheacterDao {
/**
* 根据ID查询老师的信息包括课程的信息
* @param ID
* @return
*/
Thacher getTeacherWithCourseByID(int ID);

}


两个实体类:



课程javaBean:



复杂映射必须用resuleMap进行处理,简单的映射resuleType就可以了。

下面的property里面的内容是实体类的属性,column关联的是数据库的字段。

<mapper namespace="cn.xyl.com.dao.TheacterDao">
<resultMap id = "CourseResultMap" type="cn.xyl.com.entity.Course" >
<id property="ID" column="courseID"/>
<result property="name" column="courseName"/>
<result property="desc" column="desc"/>
<result property="teacherID" column="ID"/>
</resultMap>

<resultMap id="TeacherWithCourseResultMap" type="cn.xyl.com.entity.Thacher" >
<id property="ID" column="ID"/>
<result property="name" column="name"/>
<result property="email" column="email"/>
<result property="phone" column="phone"/>
<collection property = "courses" resultMap = "CourseResultMap"/>
</resultMap>

<select id="getTeacherWithCourseByID" parameterType="int" resultMap="TeacherWithCourseResultMap">
SELECT T.ID, T.name, T.email, T.phone, C.ID AS courseID, C.name AS courseName, C.desc
FROM Teacher T
LEFT OUTER JOIN Course C
ON T.ID = C.teacherID
WHERE T.ID = #{ID}
</select>
</mapper>


最后写一个测试代码,我这是把sql直接放在数据库里得到的。



逐一映射每个属性,数据库主键使用ID映射。非主键,使用result映射。属性是一个集合,使用collection进行映射。下一个写一对一映射。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis