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