关于级联查询的理解
一对多级联查询
一条主表数据对应多条子表数据 ,由关联表产生联系,在pojo类中,子表以子表pojo类型的集合形式存在于主表pojo类的属性上
所谓级联查询就是将主表不能直接查的数据,使用自定义映射规则调用子表来查,通过column属性将主表id传给子查询,子查询使用孙子查询在关联表中查询主查询传来的id对应的子表id,再将子表id作为条件查询出所有子表对象,然后封装在集合中映射到主表属性上
<resultMap type="主查询返回值类型" id="映射规则id">
<id column="主键字段名" property="id"/>
<result column="字段名1" property="属性名1"/>
···
<result column="字段名n" property="属性名n"/>
<collection property="属性名" column="主键id"
select="子查询方法全类名">
</collection>
</resultMap>
<select id="主表查询id" resultMap="映射规则id" parameterType="int">
select * from 表名 where id = #{传入id}
</select>
<select id="子查询方法id" resultType="子表pojo类型" parameterType="int">
select * from 子表名
where 子表id in (
<!--
在关联表中查询所有主表对应的子表的id
-->
select 子表id from 关联表
where 关联表id=#{主表id})
</select>