mybatis-plus多表联查时 同时使用了分页插件, 导致数据不正确, 问题解决

此处表明使用的是page对象进行的分页,并没有手动在xml中写入limit,出现的问题,不知道手写limit是否也会出现这个问题.

问题描述

mybatis多表联查时 同时使用了分页插件, 导致数据不正确,A表根B表进行了关联,此时我们使用xml文件进行多表联查, 例如:

查询所有教师,并且查询出每位教师所管理的班级, 我们使用一个DTO类来映射信息,DTO类中包含教师信息, 与班级集合, 我们的需求是, 将老师信息映射到属性中, 这位老师所管理的班级信息映射到集合中.
where : 条件是分页查询某某页的前1位教师的数据!

事故现场

此时出现的问题是, 通过分页page对象查询后, 分页效果是出现了, 分页查询出了10位教师, 但是每位教师下的班级数据出现了问题.
查询出的班级也是一个.....

解决方案

分步查询: 我们需要分页的数据是教师表,那么班级表则不需要,让两个分开查询, 分开赋值, 通过 resultMap 映射实现分步查询.

<!-- 首先第一步我们先查询teacher表 然后去设置它的映射关系 -->
<select id="getPageTeacherAndClass" resultMap="pageTeachetMap">
        SELECT *
        FROM teacher
</select>
<!-- 第二步查询班级表 并且设置关联条件 -->
<select id="getCclass" resultType="Cclass">
        SELECT *
        FROM cclass
        WHERE teacher_id = #{teacherId}
</select>

<!-- 第三步编写 resultMap 处理映射关系 -->
<resultMap id="pageTeachetMap" type="TeacherDto">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="age" column="age"/>
        <result property="phone" column="phone"/>
         <!-- 通过分步查询单独查询它的数据 select 是查询语句的id -- column是传入的条件id -->
        <collection property="cclassList" ofType="Cclass" select="getCclass" column="id" />
</resultMap>

以上纯属个人遇见此问题解决的方式, 在这里记录, 想了个这样的案例解释, 纯属个人见解,如有更好的办法欢迎讨论.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值