MyBatis中使用collection标签来解决一对多的关联查询,ofType属性指定集合中元素的对象类型。
entity:Grade
public class Grade {
private Integer id;
private String gradeName;
private List<Student> students;
Getter and Setter ……
toString……
}
entity:Student
public class Student {
private Integer id;
private String name;
private Integer age;
private Address address;
Getter and Setter ……
toString……
}
mapping:
GradeMapper.xml
<resultMap type="Grade" id="GradeResult">
<result property="id" column="id"/>
<result property="gradeName" column="gradeName"/>
<collection property="students" column="id" select="com.java1234.mappers.StudentMapper.findByGradeId"></collection>
</resultMap>
<select id="findById" parameterType="Integer" resultMap="GradeResult">
select * from t_grade where id=#{id}
</select>
StudentMapper.xml
<resultMap type="Student" id="StudentResult">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap>
<select id="findByGradeId" resultMap="StudentResult" parameterType="Integer">
select * from t_student where gradeId=#{gradeId}
</select>