处理多对一的映射关系
1、使用级联 处理多对一的映射关系
<resultMap id="StResultMap" type="St">
<id column="st_id" property="stId"></id>
<result column="st_name" property="stName"></result>
<result column="age" property="age"></result>
<result column="gender" property="gender"></result>
<!--确认好级联属性在数据库中的字段名字(column),以及在Java实体类中对应的字段的名字(property)-->
<result column="class_id" property="class.classId"></result>
<result column="class_name" property="class.className"></result>
</resultMap>
<select id="getStAndClassByStId" resultMap="StResultMap">
SELECT
t_st.st_id,
t_st.st_name,
t_st.age,
t_st.gender,
t_class.class_id,
t_class.class_name
FROM
t_st
LEFT JOIN t_class ON t_st.class_id = t_class.class_id
where t_st.st_id = #{stId}
</select>
2、使用association标签 处理多对一的映射关系
<resultMap id="StResultMapA" type="St">
<id column="st_id" property="stId"></id>
<result column="st_name" property="stName"></result>
<result column="age" property="age"></result>
<result column="gender" property="gender"></result>
<!--专门处理多对一的映射关系association,(处理实体类类型的属性)
1、property:设置需要处理映射关系的属性的属性名 :class
2、javaType:设置要处理的属性的类型 : Class
-->
<association property="class" javaType="Class">
<id column="class_id" property="classId"></id>
<result column="class_name" property="className"></result>
</association>
</resultMap>
<select id="getStAndClassByStId" resultMap="StResultMapA">
SELECT
t_st.st_id,
t_st.st_name,
t_st.age,
t_st.gender,
t_class.class_id,
t_class.class_name
FROM
t_st
LEFT JOIN t_class ON t_st.class_id = t_class.class_id
where t_st.st_id = #{stId}
</select>
3、使用分步查询 处理多对一的映射关系
① 学生查询的接口类
public interface StMapper {
//查询员工以及所对应的部门信息,通过分步查询
St getStAndClassByStepOne(@Param("stId")Integer stId);
}
② 查询的xml文件,采用分步查询
<resultMap id="getStAndClassByStepOne" type="St">
<id column="st_id" property="stId"></id>
<result column="st_name" property="stName"></result>
<result column="age" property="age"></result>
<result column="gender" property="gender"></result>
<!--
property:设置需要处理映射关系的属性的属性名
select:设置分步查询的sql的唯一标识
column:将查询出来的某个字段作置分步查询的sql的条件
-->
<association property="class"
select="com.xmut.mybatis.mapper.ClassMapper.getStAndClassByStepTwo"
column="class_id"></association>
</resultMap>
<select id="getStAndClassByStepOne" resultMap="getStAndClassByStepOne">
select * from t_st where st_id = #{stId};
</select>
③班级查询接口
public interface ClassMapper {
//分步查询第二步
Class getStAndClassByStepTwo(@Param("stId")Integer stId);
}
④班级查询的xml文件
<select id="getStAndClassByStepTwo" resultType="Class">
select * from t_class where class_id = #{classId}
</select>
OK!就这么多,睡大觉!!!
标签:查询,映射,stId,class,秒杀,Mybatis,st,id From: https://www.cnblogs.com/Lake-Chen/p/16615665.html