mybatis 查詢一對多子表只能查出一條數據


mybatis 插敘一對多子表只能查出一條數據

環境 ssm

持久層 mybatis 關聯查詢一對多<collection>

原因 主表id 和子表id 一樣

處理方式:  select 語句中 AS 給id 起個別名 (例如我起的是tc_id)  再在子表中column指定即可

 注意

left join 中 on 后面加條件 where 和 and 的區別

 

1、 on條件是在生成臨時表時使用的條件,它不管and中的條件是否為真,都會返回左邊表中的記錄。

2、where條件是在臨時表生成好后,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左表的記錄)了,條件不為真的就全部過濾掉。

實際情況是在查詢時 邏輯刪除加的條件 放到on 后面delete_flag = 0 

SELECT
t1.*.....

FROM  AAAA  AS t1

LEFT JOIN aaaa AS t2 ON t1.id = t2.template_id AND t2.delete_flag = 0
LEFT JOIN bbbb AS t3 ON t3.id = t2.check_item_id AND t3.delete_flag = 0
LEFT JOIN cccc AS t4 ON t4.id = t2.check_method_id AND t4.delete_flag = 0
LEFT JOIN dddd AS t5 ON t1.type_id = t5.id AND t5.delete_flag = 0

WHERE
t1.id = 1
AND t1.delete_flag = 0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM