一对多分页查询引起的数据问题

秦时明月6.2魔改版_从零到一部署指南_含安卓客户端配置与GM后台直通 本文详细介绍了秦时明月6.2魔改版的从零到一部署指南,包括环境准备、服务端安装、安卓客户端配置以及GM后台直通等关键步骤。特别针对安卓客户端配置和GM工具使用提供了实用技巧,帮助用户快速搭建并优化游戏服务器,确保稳定运行。 阅读详情

记录一个一对多分页查询引起的问题, 导致查询的数据不全,
需求为: 查询项目列表, 并查询出项目对应的所有老师(项目与老师为一对多的关系), 一对多查询, 这个时候, 如果将项目表设为查询主表, 老师表为从表, 并且分页查询, 且使用group by项目的id , 查询结果中,一个项目只能查出来一个老师, 此时, 就需要用到子查询, 将分页条件写在子查询中,
在这里插入图片描述

<select id="getPageList" resultMap="projectDetailMap">
        select
        zp.id as project_id,zp.project_name,zp.company_id,zp.company_name,
        zp.project_start_date,zp.project_end_date,zp.status_code,zp.status_name,zp.is_push,zp.type_id,
        zt.id as template_id,zt.template_name,
        ztt.type_name as type_name,
        ztt.id as template_type_id,ztt.type_name as template_type_name,
        su.id as teacher_id, su.zh_name,su.head_photo as teacher_head_photo
        from zhmd_project zp
        left join zhzd_template zt on zt.id = zp.template_id
        left join zhzd_type ztt on ztt.id = zp.type_id
        left join zhmd_project_teacher zpt on zpt.project_id = zp.id
        left join sys_user su on su.id = zpt.teacher_id
        where
         zp.id in
        ( select temp.id from (SELECT distinct zp.id from zhmd_project zp
        left join zhmd_project_teacher zpt on zpt.project_id = zp.id
        where zp.is_delete = 0 <include refid="projectArgs"/>
         order by zp.create_date desc
        <if test="start!=null and pageSize!=null">
            limit #{start},#{pageSize}
        </if>
         ) as temp)
         order by zp.create_date desc
    </select>

在这里插入图片描述子查询如图所示, 将limit写在子查询中, 并且使用distinct , 就可以解决数据不全的问题,最后, 使用mybatis的手动映射

<resultMap id="projectDetailMap" type="com.etouch.admincenter.bean.ZhmdProjectBean">
        <id column="project_id" property="id"/>
        <result column="project_name" property="projectName"/>
        <result column="type_id" property="typeId"/>
        <result column="type_name" property="typeName"/>
        <result column="template_id" property="templateId"/>
        <result column="template_name" property="templateName"/>
        <result column="template_type_id" property="templateTypeId"/>
        <result column="template_type_name" property="templateTypeName"/>
        <result column="company_id" property="companyId"/>
        <result column="company_name" property="companyName"/>
        <result column="project_start_date" property="projectStartDate"/>
        <result column="project_end_date" property="projectEndDate"/>
        <result column="status_code" property="statusCode"/>
        <result column="status_name" property="statusName"/>
        <result column="is_push" property="isPush"/>
        <association property="monitorUser" javaType="com.etouch.admincenter.dto.UserDTO">
            <id column="responsible_id" property="id"/>
            <result column="responsible_login_name" property="loginName"/>
            <result column="responsible_zh_name" property="zhName"/>
            <result column="monitor_head_photo" property="headPhoto"/>
        </association>
        <association property="responsibleUser" javaType="com.etouch.admincenter.dto.UserDTO">
            <id column="monitor_id" property="id"/>
            <result column="monitor_login_name" property="loginName"/>
            <result column="monitor_zh_name" property="zhName"/>
            <result column="response_head_photo" property="headPhoto"/>
        </association>
        <collection property="teachers" ofType="com.etouch.admincenter.dto.UserDTO">
            <id column="teacher_id" property="id"/>
            <result column="teacher_login_name" property="loginName"/>
            <result column="zh_name" property="zhName"/>
            <result column="teacher_head_photo" property="headPhoto"/>
        </collection>
    </resultMap>

以下为封装的条件查询语句(其中通过isAdmin字段, 来判断当前登录用户是否是超级管理员,超管可查看所有的项目)

<sql id="projectArgs">
        <if test="projectId != null">
            and zp.id = #{projectId}
        </if>
        <if test="projectName != null">
            and zp.project_name = #{projectName}
        </if>
        <if test="companyId != null">
            and zp.company_id = #{companyId}
        </if>
        <if test="companyName != null">
            and zp.company_name = #{companyName}
        </if>
              <choose>
                <when test="isAdmin!=null">
                    and 1=1
                </when>
                <otherwise>
                    <if test="userId != null">
                        and (zpt.teacher_id = #{userId} or zp.project_manager_user_id =#{userId} )
                    </if>
                </otherwise>
              </choose>
    </sql>
深信服AC1000-B1200到手第一步:从开箱到激活上网的保姆级图文指南 本文提供深信服AC1000-B1200企业级行为管理设备的详细开局使用指南,涵盖从开箱验机、物理连接到网络配置、安全加固及设备激活的全流程。通过图文并茂的步骤解析,帮助用户快速完成设备初始化并实现安全上网,特别适合初次接触该设备的网络管理员参考。 阅读详情

相关推荐

全志DRM框架下LVDS双屏异显配置实战

本文详细介绍了在全志DRM框架下配置LVDS双屏异显的实战经验。涵盖硬件连接、内核配置、设备树修改、背光控制及U-Boot适配等关键步骤,重点解析屏参转换技巧与双屏route配置,帮助开发者解决工业控制台等多屏应用中的显示适配问题,提升开发效率。

rnn9storyteller的博客 811

Mybatis一对多查询,分页显示问题解决方案

也欢迎转发给你感觉可能会使用这个功能的朋友,分享给朋友手留余香【因为赠人玫瑰,手留余香】。分页查询在我们的开发中也许是遇到最多的功能,一张表的分页,多张表一对一功能的分页相信大家写来都是得心应手,但是在一对多分页查询的时候大家写法不对的时候,可能会遇到查询的总条数和实际总条数对不上的问题。查询第一页,每页显示2条数据,查出来的结果也是完全满足我们的要求,也和我们数据库初始化的总条数一样,一共3条数据【PS上面的Mapper中SQL的写法对ORACLE同样可以使用,因为这次它两个的语法规则是一样的】。

接需求(Java),各个平台都同名,欢迎搜索关注 5486

【计算机图形学】Pov-Ray画的垃圾小车

效果: 代码: #include "colors.inc" #include "metals.inc" #include "glass.inc" //相机 //这个位置车子刚好落在草地上了 camera { location direction z*1.5 right x*image_width/image_height look_at

lishichengyan的博客 1749

MyBatisPlus一对多分页查询处理主表子表查询条件

MyBatisPlus 一对多分页查询,处理主表分表的查询条件

Waruler的博客 5326

PyTorch实战:从零构建CNN图像分类模型

卷积神经网络(CNN)作为计算机视觉的核心架构,通过局部连接和权值共享机制高效处理图像数据。其核心组件包括卷积层、池化层和全连接层,其中PyTorch的动态计算图特性为CNN实现提供了灵活的开发环境。在工程实践中,使用CIFAR-10这类标准数据集可以快速验证模型性能,而数据增强和批归一化等技术能有效提升模型泛化能力。通过PyTorch实现CNN不仅能够掌握图像分类的基本原理,还能为后续迁移学习和复杂视觉任务打下基础,特别是在结合Adam优化器和学习率调度策略后,模型收敛速度和准确率都能得到显著提升。

weixin_42405592的博客 318

Synopsys AXI VIP 从环境搭建到首个验证场景运行

本文详细介绍了Synopsys AXI VIP从环境搭建到首个验证场景运行的全过程,包括VIP安装、示例工程生成、验证环境解析、仿真调试技巧及进阶优化。特别针对AXI协议验证中的常见问题提供了实用解决方案,帮助工程师快速掌握这一SoC验证必备工具。

weixin_29185493的博客 340

【mysql】 mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件 【mybatis】count 统计+JSON查询...

mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件+count 需求: ======================================== 1.主从表数据是 1:m 2.主从表各自都有查询条件 3.最后查询结果需要分页,并统计总数 注意: ==============================...

weixin_33814685的博客 1330

Ultrascale/Ultrascale+ FPGA GTH IP及结构详解(一)

FPGA GTH Transceiver

houzi6320的博客 1万+

Mybatis Plus一对多联表查询及分页解决方案

Mybatis-Plus一对多联表查询及分页问题解决和优化方案, 查询用户信息列表,其中包含用户对应角色信息,页面检索条件有根据角色名称查询用户列表; 一个用户对应多个角色,用户信息和角色信息分表根据用户id关联存储,用户和角色一对多进行表连接查询,

抓娃攻城师 1万+

论文浅读之PIP-Net: Patch-Based Intuitive Prototypes for Interpretable Image Classification

这篇文章的主要贡献包括:1 提出了一种新型的可解释图像分类模型PIP-Net,它基于原型部分学习可解释的原型,实现内置解释性。2 PIP-Net采用自监督学习的新正则化方法,学习原型之间的相似性,使得 latent 空间中的相似性能更好地与人类视觉感知相一致,从而减小了所谓的语义差距。3 PIP-Net可解释为一个稀疏的打分表,它可以检测图像是否属于任何类,或是否属于多个类。它也可以对OOD数据进行分类并说“我没有看到过这个”。

qq_49370210的博客 1790

单细胞转录组聚类分析R包——SC3的应用

前言 在做单细胞相关聚类分析的过程中,为了研究异质性,发现了一种专门用于单细胞转录组的聚类分析R包——SC3(single cell consensus clustering,单细胞一致性聚类)。该聚类算法发表于Nature Methods(2017),能够让单细胞RNA-seq基于转录组特征对细胞类型进行定量表征。这是一种用户友好的无监督聚类工具,它通过一致方法将多个聚类解决方案组合在一起,从而得到高精度和鲁棒性的分群结果。SC3包的官方具体使用教程见:http://www.bioconductor.or

m0_51042606的博客 5004

Mybatis进行一对多分页查询时出现数据不匹配问题

一对多分页查询时,容易出现数据与页面数据不匹配的现象(减少) 原因:由于是先查询后分页然后进行映射,查询到一对多的数据可能一个字段对应了多个结果 然后进行分页后查出的数据就减少了 解决:1.使用子查询 (mybatis内部进行子查询) 2.先分页再查询进行映射 先在表连接查询时,将要分页的表数据替换为分页后的数据 3.先查询出分页后的数据,然后再进行for循环{ 循环内部根据id进行一对多查询处理,set查询出集合数据 } ...

WH_13_14_0_的博客 1242

基于Qt与PaddleOCR的跨平台OCR工具开发实战

本文详细介绍了基于Qt与PaddleOCR开发跨平台OCR工具的实战经验。通过Qt的跨平台特性和PaddleOCR的高效识别能力,开发者可以快速构建支持Windows、Linux和macOS的OCR工具。文章涵盖了环境配置、核心功能实现、性能优化及打包发布等关键环节,特别针对中文识别、内存管理和多线程处理等常见问题提供了解决方案。

weixin_30296405的博客 88

Mybatis-plus一对多查询分页错误问题

从数据库可以发现有两条相同ID的数据,经过排查发现以a表为主表查询但连接表有多条数据则结果集会展示多条数据,例如一个用户信息对于有多个权限信息,如果用户表和权限表关联查询结果集总条数对应的是权限信息条数而分页也是基于该结果集进行分析。但是对于业务场景来说分页是需要以用户信息为基准进行分页。这里传入的页码为1条数为10,返回的page可以看见current和size都是正确的但显示总条数和结果集不匹配。不分页的情况下通过数据库执行的的条数有十八条,这和分页结果集更对不上了。执行该接口得到的结果如下。

LyrZn的博客 775

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

SmallCat0912的博客 6330

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Mybatis中PageHelper分页查询一对多分页失效问题解决

前言 Mybatis在使用过程中,难免会碰见一对多的关系查询,这时写一个sql语句和resultMap对应的话,可以取到相应的结果,但是如果这时要使用PageHelper对其进行分页的话,会出现分页结果不对的情况。这是因为PageHelper只会对查询结果进行分页,并不会对一对多中一的一方分页。 一、使用场景 此时有订单表、订单状态表、订单商品关联表,此时订单表与订单商品关联表就是一对多的场景 二、代码 1、resultMap代码 <resultMap id="myOrdersVO" type="c

NianXii的博客 3245

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

mybatis一对多的分页查询数据缺少问题,保证能解决!!!

问题描述: 最近做项目时使用mybatisplus的分页插件自定义sql时,一对多分页查询出现数据的total数量正确 而数据却少了几条。 原因一: 原因二: 如果多表(包括了关系表)级联查询,主表和明细表的主键都是id的话,明细表的多条数据只能查询出来第一条/最后一条数据。这是因为主表和明细表的id字段名相同造成的。 问题的关键在于resultMap中如果不定义类似主键之类的能够区分每一条结果集的字段的话,会引起后面一条数据覆盖前面一条数据的现象。 这是我之前的映射关系 解决方法一: 修改主表或者明细

不曾留得桃花影 3824

mybatis一对多分页方案

在使用mybatis时候一对多分页,这时候分页会有问题,采用子查询。

weixin_47298523的博客 706

数据为一对多分页查询数据错乱

记录一下经常遇到的问题:列表分页查询,数据是一对多的形式三种实现方式1、Service层实现2、不使用分页插件,子查询3、使用mybatis的懒加载示例为一篇文章关联多个附件,代码中的部分简单业务逻辑已删除。

J_novice的博客 217

mybatis一对多分页查询

问题:一对多分页查询,1对应A,多对应B,点击A对应字段弹框显示B数据,结果B数据最多展示查询A数据分页条数 原代码: 更改后代码: 更改后B数据就不会有A数据分页条件

daixiaohong的博客 799

【MPJ实战】通用一对多分页工具类 ,彻底解决多表连接分页失真问题

在企业级开发中,一对多关系的分页查询是高频场景(用户→订单、订单→商品、部门→员工)。但直接使用多表JOIN查询会出现致命问题分页数据失真:主表1条数据对应子表多条数据,分页结果条数错误、数据重复N+1查询性能灾难:先查主表再循环查子表,接口性能极差MPJ原生缺陷:MPJ仅支持一对一映射,无法自动装配一对多集合MyBatis-Plus-Join(MPJ)解决了多表连接的便捷性,但原生不支持一对多分页自动映射。本文基于MPJ封装通用一对多分页工具类,彻底解决上述痛点,开箱即用!本文通过。

weixin_42502300的博客 347

group_concat解决mybatis一对多的分页问题

mysql一对多分页问题

qq_43049583的博客 3078

mybatis中一对多分页查询结果异常问题解决

这样虽然映射的时候可以一对多的映射,但是,调用查询sql方法getInWarehouse的时候,返回的结果如果入库单关联了两个设备,就会返回两条记录。更详细的说,就是原本是个入库单列表分页查询接口,现在需要在这个接口上面返回入库单关联的入库设备的信息。突然,想起来了,写代码的这个同事,上次就因为没有把目标分页的sql查询作为PageHelper.startPage()方法后第一个查询语句,导致分页出错。前端调试的时候分页查询的时候,传的pageSize是15,但是当前页展示的却只有11条记录。

胜人者有力,自胜者强! 3537

mybatis-plus一对多分页带查询条件数目不对的问题

分页查询每页20条数据,实际查出来小于20条。

qq_44874551的博客 492

mybatis + PageHelper 一对多分页查询及问题解决

mybatis + PageHelper 分页查询及问题解决 1. mybatis 一对多查询使用 <collection/> 映射(不分页) 此方式不适合使用 PageHelper 插件分页。 FamilyMapper.xml 文件写法如下 <resultMap id="FamilyDtoMap2" type="com.caihao.mybatisdemo.dto.FamilyDto"> <id column="id" jdbcType="INTEGER" prope

chinese_cai的博客 7192

Mybatis一对多关系的分页结果数不准确的解决方法

一次工作中一个业务,要求分页查询数据,每页10条,使用MySQL+Mybatis组合,但是查出结果却出现有的页少于10条,但是直接执行SQL的确查出10条,这可真是奇了怪了,还好通过网上和讨论后确定了是Mybatis的分页逻辑的问题。 原因:Mybatis在查询一对多的数据时,如果多的那部分数据有完全相同的,那么就会覆盖之前的数据,如:一个老师会对应多个学生,如果有2个老师:老师A,老师B,3个学生:学生A,学生B,学生B,其中两个学生B是因为重名了,但每个老师和学生都有唯一的编号。外连接查询会有6条数据,

呆呆经济的博客 2627
上一篇: mybatis分页查询与筛选
下一篇: nginx配置反向代理介绍
意田天
博客等级 码龄7年 41粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

意田天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值