商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 解决Mybatis一对多/多对多查询时只查出了一条数据问题

解决Mybatis一对多/多对多查询时只查出了一条数据问题

  发布于2026-07-01 阅读(0)

扫一扫,手机访问

Mybatis一对多查询只查出一条数据,这个坑估计不少人踩过。今天就来聊聊这个问题到底出在哪。

问题描述

一对多查询时,多的一方只返回了一条记录,而不是预期的多条数据。排查了半天,发现是表结构设计上埋了个雷。

出错原因

问题就出在两张表的主键id字段名称完全相同。当Mybatis进行结果映射时,会使用id字段作为主键标识,如果多表关联查询时返回的id值重复,后一条数据就会直接覆盖前一条,最终只留下一行。

解决Mybatis一对多/多对多查询时只查出了一条数据问题

这就好比两个同名的人住在一起,系统只记住了最后一个进门的人。核心原因是Mybatis在resultMap中默认用id字段来判断对象的唯一性,一旦id相同,框架就认为数据重复了。

问题解决

方案很简单:给关联表的id字段起别名,或者使用不同的字段名。比如主表用id,子表用sub_id,确保映射时唯一识别即可。也可以在resultMap中调整column属性,显式指定不同的列名,让框架能区分每条记录。

总结

这个细节看起来不起眼,但一旦踩坑确实容易卡很久。字段命名时预留一些关联表的区分度,能省下不少排查时间。实际项目中,建议对每个表的id字段都保持唯一命名,或者在mybatis的映射配置中显式处理,避免这种隐式覆盖问题。

本文转载于:https://www.jb51.net/program/364022e3t.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注