(一)一对一
<!--一对一-->
<select id="queryStudentById" parameterType="int" resultMap="studentMap">
select s.*,c.* from student s inner join card c on s.stu_card=c.card_id where s.stu_id=#{stu_id}
</select>
<resultMap id="studentMap" type="Student">
<id property="stu_id" column="stu_id" />
<result property="stu_name" column="stu_name" />
<!--association适用于一对一 JavaType指定该属性的类型-->
<association property="card" column="card_id" javaType="com.xiaonuo.domain.Card">
<id property="card_id" column="card_id" />
<result property="card_val" column="card_val" />
</association>
</resultMap>
测试方法:
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
Student student = mapper.queryStudentById(1);
System.out.println(student);
(二)多对一
<mapper namespace="com.xiaonuo.Interface.ClassMapper">
<select id="queryClassStudents" resultMap="queryStudentByClassMapper" parameterType="int">
select class.*,student.*,card.* from card card inner join student student on student.stu_card = card.card_id inner join class class on class.class_id = student.class_id where class.class_id = #{value};
</select>
<resultMap id="queryStudentByClassMapper" type="Class">
<id property="class_id" column="class_id" />
<result property="class_name" column="class_name"/>
<!--属性类型JavaType 如果返回的是一个集合那么就是属性的元素类型 ofType collection使用一对多-->
<collection property="studentList" ofType="Student">
<id property="stu_id" column="stu_id" />
<result property="stu_name" column="stu_name" />
<!--association适用于一对一 JavaType指定该属性的类型-->
<association property="card" column="card_id" javaType="com.xiaonuo.domain.Card">
<id property="card_id" column="card_id" />
<result property="card_val" column="card_val" />
</association>
</collection>
</resultMap>
</mapper>
测试方法:
ClassMapper mapper = sqlSession.getMapper(ClassMapper.class);
Class aClass = mapper.queryClassStudents(1);
System.out.println(aClass);