mybatis plug 只查id_Mybatis一对多/多对多查询时只查出了一条数据
問題描述:
如果三表(包括了關系表)級聯查詢,主表和明細表的主鍵都是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一对多/多对多查询时只查出了一条数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 日本制造业巨头:川崎重工子公司承认质检造
- 下一篇: 转债股中签后亏100%有可能吗?亏了怎么