级联业务场景:
比如用户和部门的关系(暂时定义为1对1关系),
即:在用户表User中有部门Dept表的外键dept_id,因此实体类也相对的
在User类中有Dept对象的属性dept,这里就不一一描述了。
那么级联查询,在查询用户信息的时候就需要把用户所属的部门名称信息也列出来;
具体配置:
级联查询配置属于高级查询,因此用到resultMap;
可以使用association配置
在resultMap中通过使用association直接指定相关的部门对象,
比如用户和部门的关系(暂时定义为1对1关系),
即:在用户表User中有部门Dept表的外键dept_id,因此实体类也相对的
在User类中有Dept对象的属性dept,这里就不一一描述了。
那么级联查询,在查询用户信息的时候就需要把用户所属的部门名称信息也列出来;
具体配置:
级联查询配置属于高级查询,因此用到resultMap;
通常配置级联查询有两种方式;
第一种方式:可以直接使用属性名称关联查询返回,
如下:
直接使用dept.id及dept.departmentName即可。
第二种方式:可以使用association配置
![](https://i-blog.csdnimg.cn/blog_migrate/a111d6010c5e4ffed868c5684fd01de2.jpeg)
在resultMap中通过使用association直接指定相关的部门对象,
其中javaType指向的是部门表Dept的类路径
通过以上两种方式,可以组装配置级联查询的返回结果!
反过来,如果是需要查询部门,那么一个部门可以对应多个用户,
因此在Dept的类中有用户集合属性,List<Employee> userList;
那么查询部门Dept的时候同时把相应的迎合也查询出来放到userList中,则可以通过mybatis的collection配置,
如下:
<resultMap id="resultList" type="com.atguigu.mybatis.bean.Dept" >
<id column="did" property="did" jdbcType="INTEGER" />
<result column="dept_name" property="deptName" jdbcType="VARCHAR" />
<collection property="userList" ofType="com.atguigu.mybatis.bean.Employee" />
</resultMap>