广告
返回顶部
首页 > 资讯 > 数据库 >【解决】Mybatis-plus分页插件一对多分页查询问题
  • 664
分享到

【解决】Mybatis-plus分页插件一对多分页查询问题

mybatisjavamysql 2023-09-23 13:09:45 664人浏览 薄情痞子
摘要

项目场景: 一对多分页查询,查询主表的同时将子表数据查出 问题描述 mybatis-plus分页插件多表连查寻时数量不对 总条数有8条 实际只查询出了7条 结果丢失了一条数据,并且还会导致主数据

项目场景:

一对多分页查询,查询主表的同时将子表数据查出


问题描述

mybatis-plus分页插件多表连查寻时数量不对
总条数有8条
实际只查询出了7条
结果丢失了一条数据,并且还会导致主数据里的子数据丢失
– (假如A的某1条数据有B的3条子数据,则可能只会查出1条或者2条)

查询结果

原因分析:

一对一的情况下不会出现一下数据丢失问题

比如图中,我们通过 resultMap 中的 collection 标签指定一对多子类数据的映射

请添加图片描述

sql中查询结果如下:
A:为作业表 B:为中间表(不做演示) C:为学生表
我们可以看到,查询出了重复数据(3条历史作业,2条生物作业)
这是因为历史作业(A表)下有3位学生(B表),抛开重复数据,只查询出了7条数据
​假如体育作业在第11条,则会因为设置的分页数量为10,导致体育作业被抛弃了~
Mybatis-plus通过直接映射,数据数量不对,8条数据只查询出来7条数据。

请添加图片描述

总结
其实A表一共才8条数据,是可以全部查询出来的,因为被重复数据占用了,导致数据丢失。


解决方案:

将子表的数据单独查询

请添加图片描述

①:因为中间表(B表)字段没有在映射的实体中,则需要在映射的实体中添加对应字段,如下图
②:映射实体中子表数据集合的名称
③:关联的字段,就是子表查询时需要的字段
④:子表查询语句 select 标签的id名称
⑤:主表查询传入的参数,也就是 ③ 的值

请添加图片描述
注意:

​ 1、主表中将中间表需要关联子表的字段查询出来并取别名对应映射实体添加的字段 如图 ①处
​ 2、删除 collection 下子表的映射字段,通过分开的sql来映射
​ 3、这种写法你的请求条件参数无法传递到子表查询的sql语句中,子表sql的条件参数只能是主表column属性的字段

来源地址:https://blog.csdn.net/SmallCat0912/article/details/128240410

您可能感兴趣的文档:

--结束END--

本文标题: 【解决】Mybatis-plus分页插件一对多分页查询问题

本文链接: https://www.lsjlt.com/news/416465.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作