mybatis+pagehelper分页查询,resultmap中有collection时每页条数不对

<resultMap id="orders" type="OrderDto">
        <id property="id" column="id"/>
        <result property="number" column="onumber"/>
        <association property="address" javaType="AddressDto">
            <id property="id" column="aid"/>
            <result property="name" column="aname"/>
            <result property="address" column="address"/>
            <result property="remark" column="aremark"/>
        </association>
        <association property="activity" javaType="ActivityDto">
            <id property="id" column="cid"/>
            <result property="name" column="cname"/>
        </association>
        <collection property="productRels" ofType="OrderProductRelDto">
            <id property="id" column="rid"/>
            <result property="qty" column="qty"/>
        </collection>
    </resultMap>

pageSize是10条,但查出来size只有8条(total有38条,不是条数不足的问题):

"pageNum":1,"pageSize":10,"pages":4,"prePage":0,"size":8,"startRow":1,"total":38

请教各位朋友是哪边写得有问题么,谢谢大家

阅读 15.9k
6 个回答

【mybatis】关联查询——mybatis一对多两种方式实现详解
先好好读一下这篇博客,讲的很清晰透彻,按照这篇博客的说法你这属于第二种用法,mybatis通过查询结果之后折叠结果集把数据放在了集合里,这就导致总条数的混乱.而第一种的方式是分两次查询,就不会有分页的问题,所以解决方案就是把你的collection 写成第一种的方式


PageHelper的作者明确表示了不支持这么干
Mybatis-PageHelper

你要修改你的SQL,把是个结果先查出来,再关联那个集合找就没问题了

看看的你表里面有没有相同ID的数据

新手上路,请多包涵

楼主最后怎么解决的?分页的时候不使用嵌套?

你这是第4页,所以只有8页,唉,服了

建议不要使用所谓的分页插件。据我所知,这个pagehelper的分页原理是读取数据到内存,然后在内存里进行分页,这个在数据表很大然后要查询比较靠后的数据时这点是致命的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏