关闭

mybatis 一对多分页查询数据条数不匹配解决

3466人阅读 评论(4) 收藏 举报

  在项目中,使用mybatis做一对多关联,出现数据条数不匹配的情况,比如要查询10条,由于一对多的关系导致最终得到的数据条数变少。

外键abum_id关联tp_abum表的主键,表结构如下:


实体:


xml:




  保存后的数据如下:


sql:SELECT

abum.*,
        summary.id AS summary_id,
        summary.summary,
        summary.type AS summary_type,
        summary.compositor
        from
        `tp_abum` abum
        left join
        `tp_abum_summary` summary
        on
        abum.id = summary.abum_id

where   `status` <> '0' and create_member_code ='1' ORDER BY create_time desc  limit 0,10;

获得数据:


  很明显,mybatis一对多处理后,TPAbumAO的记录数少于10条。

  原因是tp_abum和tp_abum_summary关联查询时,由于重复数据导致分页取到tp_abum表的数据不完整,解决方法是外面不用limit,在where条件中,对abum_id使用in子查询,在in子查询里面用limit,取出指定limit的满足条件还没有外连接的评论的id.

sql:SELECT
abum.*,
        summary.id AS summary_id,
        summary.summary,
        summary.type AS summary_type,
        summary.compositor
        from
        `tp_abum` abum
        left join
        `tp_abum_summary` summary
        on
        abum.id = summary.abum_id
where  abum.id in (SELECT TEMP.id from (SELECT id from `tp_abum` where `status` <> '0' and create_member_code ='1' ORDER BY create_time desc  limit 0,10) as temp) ORDER BY abum.create_time desc ;

  最后查询结果即是正确的分页结果:


  相关文章网址:点击打开链接


0
0
查看评论

Mybatis关联查询一对多使用插件分页返回数据不对

之前在做查询,开始没有考虑那么多,就没有做分页;后来随着数据量越来越大,不得不对以前的接口改成能分页的。我用的是mybatis自带的分页插件,可以在不改变原来的sql的基础上进行分页封装,这里面用的的是拦截器的功能。修改很顺利,可没有想到后面对比后台所查询出的记录,发现返回的结果会缺失。百思不得其解...
  • huanggai1919
  • huanggai1919
  • 2015-06-23 16:47
  • 2201

Mybatis关联结果查询分页方法

在Mybatis分页插件的说明中有如下内容 不支持的情况 对于关联结果查询,使用分页得不到正常的结果,因为只有把数据全部查询出来,才能得到最终的结果,对这个结果进行分页才有效。因而如果是这种情况,必然要先全部查询,在对结果处理,这样就体现不出分页的作用了。 对于关联嵌套查询,使...
  • isea533
  • isea533
  • 2014-06-06 20:30
  • 15670

MyBatis增删改查操作、MyBatis存储过程、MyBatis分页、MyBatis一对一、MyBatis一对多

一、用到的实体类如下: Student.java package com.company.entity; import java.io.Serializable; import java.util.Date; public class Student implements Ser...
  • gongzi2311
  • gongzi2311
  • 2015-05-11 15:37
  • 1446

关于mybatis中collection一对多关联查询分页出错问题总结

在使用PageHelper+mybatis作为数据分页查询的时候,如果使用了collection进行一对多关联的时候有可能出现分页不正确的问题
  • baidu_38116275
  • baidu_38116275
  • 2017-11-25 10:16
  • 381

mybatis的一对多和多对多查询

一对多和多对多的关系我是以你平时买东西为例子的,一个用户对应多个订单,一个订单对应多个订单明细,一个订单明细对应一个商品,根据这些关系来进行实例演示。实例演示 一对多(一个订单对应多个订单明细) 1)定义一个用户实体类User.java package com;import java.util.D...
  • u013164612
  • u013164612
  • 2016-08-14 09:00
  • 19457

mybatis关联查询问题(一对多、多对一)

mybatis 提供了高级的关联查询功能,可以很方便地将数据库获取的结果集映射到定义的Java Bean 中。下面通过一个实例,来展示一下Mybatis对于常见的一对多和多对一关系复杂映射是怎样处理的。 设计一个简单的博客系统,一个用户可以开多个博客,在博客中可以发表文章,允许发表评论,可以为文章...
  • qq_27376871
  • qq_27376871
  • 2016-05-16 18:32
  • 2260

MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)

MyBitis(iBitis)系列随笔之一:MyBitis入门实例 MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM) MyBitis(iBitis)系列随笔之三:简单实现CRUD MyBitis(iBitis)系列随笔之四:多表(多对一查询...
  • jefry_xdz
  • jefry_xdz
  • 2013-04-07 14:15
  • 40946

Mybatis一对多、多对一、批量插入

在项目开发中,我们有遇到的对象关系通常是复杂的,每个对象并不是单独的。比如学生和老师之间关系,一个老师有多个学生,每个学生会对应一个老师(这里的老师主要是班主任),这种关系其实就是一对多的关系。Mybatis在处理这种关系的时候,也是有自己的办法的。接下来就讲述一下在Mybatis中处理一对多关系的...
  • dyy_gusi
  • dyy_gusi
  • 2015-10-21 12:03
  • 11168

sql 一对多查询分页

sql 1对多查询(关联查询)时进行分页,以mysql举例
  • u014653197
  • u014653197
  • 2017-02-10 15:47
  • 1431

mysql 1对多--分页查询

mysql 1对多 分页联合查询 limit 0,10。。。小菜 记录一下
  • sunqimin
  • sunqimin
  • 2015-01-05 09:24
  • 1962
    个人资料
    • 访问:11130次
    • 积分:266
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:2篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论