一对多关联
实例: 班级对同学
创建数据表
创建 班级信息表
create table classes(
cid int primary key auto_increment,
cname varchar(32) not null unique,
cdesc varchar(100)
);
创建学生信息表(在多的一端添加外键)
create table students(
sid char(5) primary key,
sname varchar(20) not null,
sage int not null,
scid int not null
);
创建实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Student {
private String sid;
private String sname;
private Integer sage;
private Integer scid;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Clazz {
private Integer cid;
private String cname;
private String cdesc;
private List<Student> stus; //存储当前班级下的学生信息
}
关联查询
当查询一个班级时,要关联查询出这个班级下的所有学生
- 连接查询
<resultMap id="classMap" type="Clazz">
<id column="cid" property="cid"></id>
<result column="cname" property="cname"></result>
<result column="cdesc" property="cdesc"></result>
<!-- clazz对象的stus属性是一个list集合,需要使用collection标签-->
<!-- collection标签的ofType属性声明集合中元素的类型 -->
<collection property="stus" ofType="Students">
<result column="sid" property="sid"></result>
<result column="sname" property="sname"></result>
<result column="sage" property="sage"></result>
</collection>
</resultMap>
<select id="queryClass" resultMap="classMap">
select cid,cname,cdesc