mybatis plug 只查id_Mybatis一对多/多对多查询时只查出了一条数据
問題描述:
如果三表(包括了關(guān)系表)級(jí)聯(lián)查詢,主表和明細(xì)表的主鍵都是id的話,明細(xì)表的多條數(shù)據(jù)只能查詢出來第一條/最后一條數(shù)據(jù)。
三個(gè)表,權(quán)限表(Permission),權(quán)限組表(PermissionGroup),權(quán)限組與權(quán)限的關(guān)系表(PermissionPermissionGroupKey)
實(shí)體類就不寫上來了。
原出錯(cuò)映射文件:
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
這是因?yàn)橹鞅砗兔骷?xì)表的id字段名相同造成的。
問題的關(guān)鍵在于resultMap中如果不定義類似主鍵之類的能夠區(qū)分每一條結(jié)果集的字段的話,會(huì)引起后面一條數(shù)據(jù)覆蓋前面一條數(shù)據(jù)的現(xiàn)象。
解決方法一:
修改主表或者明細(xì)表的id名,保證不一致就行
解決方法二:
查詢結(jié)果起別名
修改映射文件如下:
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
如上兩種方法均能解決這個(gè)問題,希望對(duì)你有幫助
有知道出現(xiàn)這個(gè)問題的原理的大佬歡迎在評(píng)論區(qū)解釋下,O(∩_∩)O謝謝
本文章由[諳憶]編寫, 所有權(quán)利保留。
歡迎轉(zhuǎn)載,分享是進(jìn)步的源泉。
總結(jié)
以上是生活随笔為你收集整理的mybatis plug 只查id_Mybatis一对多/多对多查询时只查出了一条数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 日本制造业巨头:川崎重工子公司承认质检造
- 下一篇: 转债股中签后亏100%有可能吗?亏了怎么