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