Mybatis一对多/多对多查询时只查出了一条数据

我萌吧!

问题描述:

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

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


原出错映射文件:


原出错映射文件


出错原因:

这是因为主表和明细表的id字段名相同造成的。 问题的关键在于resultMap中如果不定义类似主键之类的能够区分每一条结果集的字段的话,会引起后面一条数据覆盖前面一条数据的现象。


如何解决?

解决方法一:

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

解决方法二:

查询结果起别名。


修改后的映射文件如下:


修改后的映射文件

你可能感兴趣的:(Mybatis一对多/多对多查询时只查出了一条数据)