本文主要是介绍Mybatis分页查询主从表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
先主查询,再关联子查询,不影响分页效果,否则子查询也会参与分页。
<resultMap id="Hdr" type="com.Hdr"><id column="crh_id" property="id" javaType="int"/><collection property="DtlList" select="queryAllRmdDetail" column="crh_id" fetchType="eager"></collection></resultMap>
<resultMap id="Dtl" type="com.Dtl"></resultMap>
主查询:
<select id="queryByCondition" parameterType="String" resultMap="Hdr"></select>
在主查询后,通过传入主键id进行关联子查询:
<select id="queryAllDetail" parameterType="int" resultMap="Dtl">SELECT * FROM biz_dtl WHERE crh_id = #{id}</select>
主查询的结果是List,以及每一条记录的内涵List,性能是N+1次查询。
如果提高查询性能,可以使用别名的方式,在SQL中把子查询进行重新命名。
不过如果主查询包括SUM和Group语句,这种方式就不可以。
只有在平铺所有主从表的时候可用。
<resultMap id="blogResult" type="Blog"><id property="id" column="blog_id" /><result property="title" column="blog_title"/><collection property="posts" ofType="Post" resultMap="blogPostResult" columnPrefix="post_"/>
</resultMap><resultMap id="blogPostResult" type="Post"><id property="id" column="id"/><result property="subject" column="subject"/><result property="body" column="body"/>
</resultMap>
这篇关于Mybatis分页查询主从表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!