问题描述:

如果三表(包括了关系表)级联查询,主表和明细表的主键都是id的话,明细表的多条数据只能查询出来第一条/最后一条数据。

三个表,权限表(Permission),权限组表(PermissionGroup),权限组与权限的关系表(PermissionPermissionGroupKey)

实体类就不写上来了。

原出错映射文件:

SELECT *

FROM [QPWebDB].[dbo].[permission_group] pg

left join [QPWebDB].[dbo].[permission_permission_group] ppg on pg.id=ppg.permission_group_id

left join [QPWebDB].[dbo].[permission] p on p.permission_id=ppg.permission_id

这是因为主表和明细表的id字段名相同造成的。

问题的关键在于resultMap中如果不定义类似主键之类的能够区分每一条结果集的字段的话,会引起后面一条数据覆盖前面一条数据的现象。

解决方法一:

修改主表或者明细表的id名,保证不一致就行

解决方法二:

查询结果起别名

修改映射文件如下:

SELECT pg.*,

p.id p_id,

p.url,

p.name,

p.explain,

p.decipher,

p.create_time

FROM [QPWebDB].[dbo].[permission_group] pg

left join [QPWebDB].[dbo].[permission_permission_group] ppg on pg.id=ppg.permission_group_id

left join [QPWebDB].[dbo].[permission] p on p.id=ppg.permission_id

如上两种方法均能解决这个问题,希望对你有帮助

有知道出现这个问题的原理的大佬欢迎在评论区解释下,O(∩_∩)O谢谢

本文章由[谙忆]编写, 所有权利保留。

欢迎转载,分享是进步的源泉。

mybatis plug 只查id_Mybatis一对多/多对多查询时只查出了一条数据相关推荐

  1. Mybatis-Plus用纯注解完成一对多多对多查询

    Mybatis-Plus用纯注解搞定一对多&多对多查询 业务中很常见的用户-角色就属于典型的多对多关系. 假设我们需要将用户信息(包括了用户对应的角色信息)查询出来 多对多 数据表结构 use ...

  2. 高级MyBatis -- resultMap实现联表(一对多,多对一)

    前言: 结合实际生活来看联表,拿一个习以为常的例子来说,学生和老师: 多个学生对应一个老师 -- 多对一 (当然是在一个课堂上,嘻嘻) 一个老师对应多个学生 -- 一对多 (同上) 在实际操作时,我们 ...

  3. mybatis plug 只查id_MyBatis Generator的一个问题引发对插件的修改

    在使用mybatis.generator插件自动生成mapper.xml的时候发现一个问题:默认生成的dao接口为mapper结尾 mapper结尾 当然我们知道在不同的ORM框架中名称表示不同,例如 ...

  4. MyBatis开发入门二:一对多连表查询

    1. 步骤: (1). 加包 (2). 编写db.properties:编写conf.xml,将db.properties加入到conf.xml:引入别名 (3). 建立实体类 (4). 编写sql操 ...

  5. gorm一对一 一对多 多对多查询案例

    Student -- IDCard -- Class -- Teacher

  6. mysql主表一条数据对应从表多条数据需要只显示一条

    场景,在关联表查询时,主表的一条数据查询时对应了从表中的多条数据,但是需求要求只显示主表对应的一条从表数据. 解决方案: 在查询最后加上GROUP BY去重 原来的SQL: select * from ...

  7. mysql 只返回第一条_mybatis 关联查询时,从表只返回第一条记录解决办法

    如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条. 造成以上情况可能的原因: 1.级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的.但在my ...

  8. mybatis 取查询值_Oracle结合Mybatis实现取表TOP 10条数据

    之前一直使用mysql和informix数据库,查表中前10条数据十分简单: 最原始版本: select top * from student 当然,我们还可以写的复杂一点,比如外加一些查询条件? 比 ...

  9. java使用mybatis一次性插入多条数据

    项目场景: java使用ibatis作为持久层框架时如何一次性插入多条数据 问题描述 正常插入一条数据的代码是这样的 mapper.insert(model) 问题分析: 这样单条插入是没有问题,问题 ...

最新文章

  1. Apache Web服务器访问控制机制全解析
  2. 数据库查询性能优化之利器—索引(二)
  3. 【Python-ML】SKlearn库原型聚类KMeans
  4. 内存的静态分配和动态分配的区别【转】 静态分配内存与动态分配内存的区别
  5. C语言程序练习-L1-019 谁先倒 (15分)
  6. python打开excel进行编辑_使用Python进行Excel文件处理
  7. Python利用matplotlib.animation和matplotlib.pyplot和ffmpeg录制动画并保存为MP4文件
  8. 从一个登录页面浅淡MVVM(二)
  9. 分形:MandelBrot和Julia
  10. 洛谷P2234 [HNOI2002]营业额统计 set简易解法
  11. Linux搭建深度神经网络,linux服务器搭建深度学习环境
  12. couchdb 视图操作_CouchDB 教程
  13. linux 联机游戏下载,星露谷物语多人联机版
  14. 最好听的男孩英文名字大全
  15. qpython3.7.4版本下载_QPython3app下载
  16. OA实施周期:易用性才是关键因素
  17. Flink的重启策略(RestartStrategy)实战
  18. 代码对比工具:我最喜欢用的还是这几个
  19. 改善编程体验: IdeaVimExtension介绍
  20. 《陰陽師·付喪神卷·迷神》原作:夢枕貘

热门文章

  1. SecureCRT连接linux时主机名,secureCRT连接linux方法
  2. 【C++深度剖析教程19】前置操作符与后置操作符
  3. 链表逆序(JAVA实现)
  4. python实战学习之matplotlib绘图续
  5. CSS3详解:transform、transition
  6. 136. Single Number
  7. Java读源代码学设计模式:适配器Adapter
  8. fastdfs集群搭建2
  9. ???--???二进制变换
  10. BZOJ4122 : [Baltic2015]File paths