解决Mybatis+PageHelper实现一对多查询时分页数据不对的问题

2 篇文章 0 订阅
订阅专栏

问题:最近的项目中,有一个SQL需要查Product和Picture的关联数据,一个Product对应了多个Picture。使用pagehelper分页时,传的pagesize=8,发现日志中显示SQL查询到的total是8,但JAVA那里使用Page<Product>接收到的数据只有6条,后来发现是因为在mybatis那里写SQL的时候,对于Picture的数据放到了Collection里,虽然查询的数据量是8,但是真正的product只有6条,有4个Product都关联了1个图片,2个Product分别关联了2个图片。pagehelper分页时是按查询的数据量进行分页的(也就是8),然后查询到这8条数据后,因为配置的resultMap的原因,会将product相同的合并,导致最后收到的数量比实际需要的少。

初始的mybati中的SQL简化版如下:

查询到的数据结构如下:

我们需要的分页方式,是需要按照product进行分页,所以修改了SQL,将查询Picture的SQL分了出来,通过在resultMap那里配置select将其关联。修改后如下:

resultMap标签中的collection标签里相对之前加了一个select属性,对应子查询SQL的select id,子查询SQL和主查询SQL之间通过id字段关联,配置在colunm属性上。如果有子查询需要多个条件的话,那么可以写成 <collection column="{propName1=column1,propName2=column2}"/> ,然后在子查询中就可以使用 propName1 和 propName2 了。

 

参考资料:https://blog.csdn.net/chinese_cai/article/details/107956817

 

mybatis一对多结果集,主表分页查询,子表条件查询
学海无涯,我用JAVA
07-28 1854
一对多查询嵌套查询: 主表查询过程中,再次调用一个查询,取查询子表数据嵌套结果集查询: 一次性查询主表关联出子表,通过结果集封装,将自己封装为一个集合,返回一个一对多的结果今天要说的是当: 做了一对多查询后,还要对多的子表,进行条件过滤,然后在反过来应用到主表上,继续分页查询~~丧心病狂的产品汪~~至此,一个一对多,然后用子表的过滤条件,作用到主表上的 分页…已经实现了~~
mybatis一对多查询Pagehelper分页条数不对
小四是个程序猿的博客
07-24 2114
问题:在写mybatis一对多候用到了Pagehelper进行分页,然后发现确实能分页,但是展示的条数不对,后来研究了发现原来Pagehelper插件在一对多查询候默认的是对多的一方进行的分页,不是一的一方。 解决:目前我的解决方式是用子查询,这样能够达到我想要的效果,不过会出现N+1次查询,但是我目前没有找到更好的解决方法,有的朋友可以评论分享一下。 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "
jpa多表关联查询_JPA【关联查询篇】
weixin_39625162的博客
11-25 2210
摘要:本文主要介绍JPA的多表关联查询(一对一、一对多、双向关联、多对一、多对多)以及N+1查询的优化。1. JPA多表关联查询多表关联查询就是实现使用一个实体类对象操作或者查询多个表的数据。配置多表联系查询必须有两个步骤:[1] 建立实体类,使用注解配置单表关联。[2] 修改实体类,使用注解配置多表关联。本文使用的数据库表SQL脚本:/* Navicat Premium Data Transf...
Mybatis/Mybatis-plus多表关联分页数目偏小问题
qq_42842433的博客
09-18 691
A表:id,a_name B表:id,b_name ,aid(外键,关联A表id) 若要分页查询A表的a_name,同要关联查询B表的b_name, 由于A表的一列可能对应多个B表记录,所以若将sql写成A表和B表等值连接,并用collection标签将b_name封装进一个list,将会出现重复列 如下例: aid a_name b_name 1 a1 b1 1 a1 b2 2 a2 b3 3 a3 b4 若此对结果分页,每页4条记录,实际查询出来只会有3条记录 解决
Spring Data JPA 实现多表关联查询
热门推荐
04-02 3万+
最近抽出间来做博客,数据库操作使用的是 JPA,相对比 Mybatis 而言,JPA 单表操作非常方便,增删改查都已经写好了。但是多表操作就不如 Mybatis 那种直接写 sql 语句来得方便,JPA 的多表操作比较麻烦。 需求描述获得文章列表,文章列表里需要显示每篇文章的分类目录列表,因为一个文章可能有多个分类,一个分类当然也可以对应多篇文章的。 下面是我用截图软件画的一个图,描述的是三张表...
mysql虚拟表
larance的挨踢生活
04-02 2702
虚拟表,顾名思义,就是实际上并不存在(物理上不存在),但是逻辑上存在的表。这样说很抽象,还是看一些实际的例子吧。 在mysql中,存在三种虚拟表:临表、内存表和视图。视图会单独讲,本节仅仅将临表和内存表。 一、mysql表 1、什么是临表 临表是建立在系统临文件夹中的表,如果使用得当,完全可以像普通表一样进行各种操作。 临表的数据和表结构都储存在内存之中,退
mysql 伪表_--------oracle 的伪表和伪劣,简单的分页
weixin_39915815的博客
01-27 619
一:伪表:Dual目的:01.sql标准规定:select语句中必须有from!必须有表名!02.我们查询数据不在任何一个表中!03.为了保证在使用select语句的完整性!04.表的结构是单行单列Mysql中可以不使用!Oracle中必须使用!二:伪列:1.RowIDSelecr rowid from 表名;001.是一个数据类型,唯一标识一条数据在物理位置的一个ID!002.64位编码...
完美解决MybatisPlus插件分页查询不起作用总是查询全部数据问题
09-07
正常情况下,这将触发两条SQL语句的执行:第一条是计算总记录数,第二条是带有`LIMIT`限制的查询当前页数据的SQL。如果没有配置PaginationInterceptor,`selectPage`只会执行一条无分页查询,这正是导致问题的原因...
Mybatis使用collection映射一对多关系查询导致的分页问题
过期汽水的博客
12-11 2646
问题描述: 实体类有文章,标签。一篇文章有多个标签 对应的数据库表有m_blog,m_tag和m_blog_tag BlogMapper如下: <resultMap id="blog_tag" type="com.fanta.entity.Blog"> <result property="bid" column="bid"/> <result property="user_id" column="user_id"/>
关于mybatis中collection一对多关联查询分页出错问题总结
baidu_38116275的博客
11-25 2万+
在使用PageHelper+mybatis作为数据分页查询候,如果使用了collection进行一对多关联的候有可能出现分页正确问题
MyBatis分页插件PageHelper的使用
桐花思雨
01-07 476
目录`pagehelper` 分页插件简介 pagehelper 分页插件简介 如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页 gitHub 官方文档:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md ...
JPA多表关联查询
★【World Of Moshow 郑锴】★
04-23 3509
JPA多表映射一般来说有两种方法,旧传统,Hibernate的候是采用的对象关联的方式,但是那种太out了也太杂乱,还要考虑懒加载这东西。 另外一种是跟mybatis多表关联一样,搞多一个新对象来做映射,达到多表关联的目的。 以下是JPA的一个实操例子,仅供参考 public interface QueueRepository extends JpaRepository&lt;Queu...
jpa 多表关联查询
srj904711648的博客
03-02 2461
jpa 多表关联查询
jpa的多表关联查询
xuexilangren1的博客
12-03 3841
两种情况 利用root.join()实现表关联 利用join方法实现表关联查询的是候是依赖于主表对应的实体中存在需要关联的表的实体。 这两者的关系可以是1:1 1:n n:1 n:m 相应的实体中需要使用到@OneToMany@ManyToMany@ManyToOne@OneToOne 注释相应的字段。该注解可单独出现在一个实体中,互相关联的实体没有该注解的约束(例如:一个中用例1:n 的注解另一个并不一定需要增加对应的对象同也就没有n:1注解的事情了) 通过join可以设置左相联还是右
Jpa多表关联查询
weixin_43472934的博客
06-28 1174
一对多关系 需求:通过ID,查询学生信息,然后通过学生查询对应的成绩信息 --实体类 @Entity @Table(name="tb_student") public class Student implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="st
mysql 有伪表吗,MySQL入门
weixin_36179103的博客
03-17 574
MySQL入门1、MySQL的基本介绍数据库(database),数据库是存储数据的仓库,本质是一个系统文件,我们可以对这个文件(数据库)数据进行增删改查操作(crud)。数据是直接存在数据库中还是数据表中?存在数据表中。数据表结构及原理:数据表:由行和列组成。列:字段行:记录2、MySQL数据库的安装与卸载安装:在网上可以找到安装教程,按着安装就行,安装之前必须保证之前没有安装过mysql或已经...
SpringBoot (四):JPA(多表关联查询
weixin_52841956的博客
01-14 3592
Spring Boot Jpa 是 Spring 基于 ORM 框架、Jpa 规范的基础上封装的一套 Jpa 应用框架,可使开发者用极简的代码即可实现数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data Jpa 可以极大提高开发效率。 (完全用面向对象的思想操作数据库----不要写sql语句,可以crud数据库) jpa与mybatis的区别? 1.对象jdbc的封装程度不同。 orm 对象关系映射 object relationship m
pagehelper导致一对多查询分页出错
NothingToSay
06-06 1566
问题复现 我们都知道在实际的开发中,我们经常遇到需要展示一对多数据问题,如:一个人共有n个订单,每个订单有不定的商品,那么这种显示的数据结构就是我们的一对多数据结构:如下所示: 但使用pagehelper分页导致mybatis一对多查询分页结果出错,错误原因在于,一对多collection,他计算的条数是按商品计算的(一对多的“多”,而不是“一”),比如上图中,如果分页参数是pageNum=1,pageSize=2,那么我们想要的结果应该是上图所示,但我们实际查询出来的是,只有orderNo为1的那一部
Spring Data JPA实现多表的关联查询
pan_junbiao的博客
04-05 2万+
1、Spring Data JPA关系映射 对象关系映射(Object relational mapping)是指通过将对象状态映射到数据库列,来开发和维护对象和关系数据库之间的关系。它能够轻松处理(执行)各种数据库操作,如插入、更新、删除等。 关系映射的注解: 注解 说明 @JoinColumn 指定一个实体组织或实体集合。用在“多对一”和“一对多”的关联中。 @One...
mybatis+pagehelper分页
最新发布
01-31
MyBatis是一个开源的持久层框架,它可以与Java应用程序中的关系数据库进行交互。而PageHelperMyBatis的一个插件,它提供了分页查询的功能。 使用MyBatis+PageHelper进行分页查询的步骤如下: 1. 引入依赖:在项目的pom.xml文件中添加MyBatisPageHelper的依赖。 2. 配置PageHelper:在MyBatis的配置文件(通常是mybatis-config.xml)中配置PageHelper插件。可以设置分页插件的参数,如每页显示的记录数、是否进行count查询等。 3. 在Mapper接口中定义方法:在Mapper接口中定义需要进行分页查询的方法,并使用PageHelper提供的静态方法进行分页设置。 4. 在Mapper.xml文件中编写SQL语句:在Mapper.xml文件中编写查询语句,并使用PageHelper提供的插件标签进行分页设置。 5. 调用分页查询方法:在Java代码中调用Mapper接口中定义的分页查询方法,即可实现分页查询功能。 总结一下,使用MyBatis+PageHelper进行分页查询的关键是配置PageHelper插件,并在Mapper接口和Mapper.xml文件中进行相应的设置。
写文章

热门文章

  • flowable实现流程回退功能 20629
  • flowable任务监听器获取spring bean 6491
  • flowable中的processEngineConfiguration配置 5488
  • 解决Mybatis+PageHelper实现一对多查询时分页数据不对的问题 4908
  • webservice时使用JaxWsDynamicClientFactory报空指针 4080

分类专栏

  • springboot 2篇
  • java学习笔记 2篇
  • flowable 2篇
  • java环境 2篇
  • 问题记录 2篇
  • mybatis 1篇

最新评论

  • 解决Mybatis+PageHelper实现一对多查询时分页数据不对的问题

    哭泣的神: 这种方式怎么对填充的数据进行条件查询

  • 解决Mybatis+PageHelper实现一对多查询时分页数据不对的问题

    小华y: 我的问题解决了,谢谢作者

  • 解决Mybatis+PageHelper实现一对多查询时分页数据不对的问题

    兔子托尼的主人: 我用这个改好了,准备点赞,看到了您的评论;忍不住说两句,作者文章质量还行,如果发现错误请指出来哪里有错,这样既能方便后来人,也能让作者及时修改错误。

  • 解决Mybatis+PageHelper实现一对多查询时分页数据不对的问题

    java蔡徐坤: 这种垃圾代码 求你不要再拿出来害人了好吗 你自己看看对吗

  • flowable实现流程回退功能

    _坤 回复 bestfc: 你的回退功能实现了吗? 是通过业务表配合,记录操作过的taskId,和是自己迭代所有BpmnModel 自己判断? 有没有合适简单的方案

大家在看

  • 如何处理请求体,使用 HttpEntity 类:可以同时获取请求体和请求头。 216
  • C# 使用 Jarvis 算法或包装的凸包(Convex Hull using Jarvis’ Algorithm or Wrapping) 758
  • 夜神模拟器抓包:如何安装系统证书而不是用户证书
  • C语言指针基础题(一) 975
  • 文件加密技术解析:守护敏感信息的第一道防线 390

最新文章

  • springboot项目
  • springboot整合swagger2
  • Springboot项目增加拦截器
2021年5篇
2017年9篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳坪山网站建设公司佛山网站优化关键词教程徐州网站关键词优化排名技巧盐城市网站优化公司江门电子网站优化濮阳网站优化推广有用吗晋江网站优化靠谱的网站推广优化欢迎咨询淮北网站优化费用多少图片优化网站怎么弄网站优化排名工具潍城网站推广优化联系方式商河网站优化排名玉林网站排名优化服务郑州网站关键词seo优化公司儋州齐全的网站优化华强北在线网站优化河北网站布局优化娄底网站优化外包亳州seo网站优化网站的优化怎么做于洪区正规网站建设优化价格阳江网站排名优化公司城阳快速优化网站翔安区网站首页优化公司成都网站优化快速排名兴化网站搜索优化工作室宁波海曙区网站优化怎么选遂宁网站优化好seo网站优化推广整站排名教程静安区企业官网网站优化方案香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化