“ 本文接上篇《MyBatis框架中级篇(一)一对多级联查询》。上篇文章介绍了通过级联查询的方式进行一对多查询。本文介绍第二种方式,基于子查询的方式。”
从之前的内容,我们有两张表,一张emp表用于存储部门信息。另一张表是dept部门表。两张表的关联就是通过部门编号deptNo。
01
—
子查询
首先,我们配置第一条子查询语句,通过deptNo查询部门信息。配置如下:

然后,我们接着配置第二条子查询语句,也是通过deptNo查询dept表。

我们将第一张emp表查询的结果保存在empList中。所以在配置collection的时候,需要在select中关联的id是第一张表的select标签的id。

整个子查询的顺序是,通过select标签id为findBydeptNo2进行查询,然后映射关系指向上面的resultMap。在resultMap中的collection,使用findBydeptNo1的select语句进行查询。
02
—
测试
我们首先写一个接口函数,函数名称就是上面的findBydeptNo2。

然后编写测试程序,和上篇类似,只是修改接口方法。

查询结果如下:

通过测试,发现两种方法都可以支持多表的查询。但是实际上这种方式的SQL效率要低于第一种方式,这种方式需要多次查询数据库,因此效率低了。
文章转载自码农的修炼之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




