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

posted @ 2021-08-02 16:38  三只坚果  阅读(549)  评论(2编辑  收藏  举报