关于级联查询的理解

一对多级联查询

一条主表数据对应多条子表数据 ,由关联表产生联系,在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>
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐