Mybatis问题:pageHelper与Collection导致的分页数据展示不一致问题

项目场景:

分页展示项目数据


问题描述:

Mybatis 分页查询信息总数与分页不数据不对等,大概率遇到了Mybatis Collection一对多查询 与 pageHelper 插件冲突的情况,,在此记录一下

 


原因分析:

totoal统计的时候展示的是 Collections数据 的数量,而页面上展示的则是 resultMap 中 Collection 的数量,

例如 :resultMap 中有 1条数据,每条数据中的 Collection 中有 10条数据,那么 返回的total总数量为 1, 但是分页查询是展示的会是 10条数据


解决方案:

停止采用 直接在resultMap中返回查询结果的方法,而是采用 在resultMap 的 collection中进行子查询的方法获取数据, 子查询的查询结果会以单一List的方式返回,这样就跟查询的total总数相等了。

<resultMap id="ResultMapDesignDTO1" type="test">
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="works_id" property="worksId" jdbcType="VARCHAR"/>
        <collection property="worksLog" ofType="WorksLog" column="works_id" select="getWorksLogs"/>
</resultMap>

<select id="getWorksLogs" resultMap="WorksLogs" parameterType="java.lang.String">
        SELECT oper_time,memo
        FROM works_log where  works_id =#{worksId} 
</select>

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值