Mybatis:一对多关系分页查询数据不匹配

基本思路:对基表进行分页,而不是针对最后的查询结果

<resultMap type="com.web.model.Test" id="TestMap">
    <id property="systemid" column="systemid"/>
    <result property="create_time" column="create_time"/>

    <collection property="test_extend_info" ofType="com.web.model.Test_extend">
        <id property="info" column="info"/>
        <result property="status" column="status"/>
    </collection>

</resultMap>

分页sql

<sql id="pageHeader">
    select * from ( select a.*, rownum rn from (
</sql>

<sql id="pageRoot">
    ) a where rownum &lt;= #{rowEnd} ) where rn &gt; #{rowStart}
</sql>

基表查询sql

<sql id="getTestInfoBasic">
    select *
    from  t_test a
    <where>
        ……
    </where>
    order by create_time desc
</sql>

对基表进行分页sql

<sql id="getTestInfo">
    select t.systemid, t.create_time, e.info, e.status
    from (
        <include refid = "pageHeader" />
            <include refid = "getTestInfoBasic" />
        <include refid = "pageRoot" />
    ) t
    left join 
        t_test_extend e
    on t.systemid = e.systemid
</sql>

结果查询sql

<select id="getTestInfoCount" resultType="java.lang.Integer">
    select count(systemid) from ( <include refid = "getTestInfoBasic" /> )
</select>

<select id="getTestInfoByOrgId" resultMap="TestMap">
    select * from ( <include refid = "getTestInfo" /> )	
</select>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值