解决Mybatis一对多/多对多查询时只查出了一条数据问题
作者:归人云淡风轻
时间:2026-07-01
浏览:1
Mybatis一对多查询只查出一条数据,这个坑估计不少人踩过。今天就来聊聊这个问题到底出在哪。 问题描述 一对多查询时,多的一方只返回了一条记录,而不是预期的多条数据。排查了半天,发现是表结构设计上埋了个雷。 出错原因 问题就出在两张表的主键id字段名称完全相同。当Mybatis进行结果映射时,会使
本文目录
Mybatis一对多查询只查出一条数据,这个坑估计不少人踩过。今天就来聊聊这个问题到底出在哪。
问题描述
一对多查询时,多的一方只返回了一条记录,而不是预期的多条数据。排查了半天,发现是表结构设计上埋了个雷。
出错原因
问题就出在两张表的主键id字段名称完全相同。当Mybatis进行结果映射时,会使用id字段作为主键标识,如果多表关联查询时返回的id值重复,后一条数据就会直接覆盖前一条,最终只留下一行。

这就好比两个同名的人住在一起,系统只记住了最后一个进门的人。核心原因是Mybatis在resultMap中默认用id字段来判断对象的唯一性,一旦id相同,框架就认为数据重复了。
问题解决
方案很简单:给关联表的id字段起别名,或者使用不同的字段名。比如主表用id,子表用sub_id,确保映射时唯一识别即可。也可以在resultMap中调整column属性,显式指定不同的列名,让框架能区分每条记录。
总结
这个细节看起来不起眼,但一旦踩坑确实容易卡很久。字段命名时预留一些关联表的区分度,能省下不少排查时间。实际项目中,建议对每个表的id字段都保持唯一命名,或者在mybatis的映射配置中显式处理,避免这种隐式覆盖问题。
作者最新文章
coreldraw快捷键怎么设置在哪里
2026-11-02 21:39
AO3最新可用链接及中文入口汇总
2026-10-29 13:32
coreldraw怎么插入图片 图片导入步骤
2026-10-27 15:37
coreldraw快捷键冲突 怎么改 自定义按键解决
2026-10-24 08:50
AO3中文界面设置指南与核心功能使用教程
2026-10-14 23:28
上一篇:
使用Qt开发一个简易图片查看器的完整指南
下一篇:
mybatis执行任意SQL问题
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































