接上篇
相关的类还是上篇中的类。
查询部门的时候将部门对应的所有员工信息也查询出来
DepartmentMapper.xml
collection分步查询
先通过部门表的id
查出部门信息,再通过员工表的部门id查出所有的员工信息,也就是Department
中的private List<Employee> emps;
的属性信息
DepartmentMapper.xml
:首先通过id="getDeptByIdStep"
的sql查出部门信息
再通过collection中的select="com.mybatis.dao.EmployeeMapperPlus.getEmpsByDeptId"
调用EmployeeMapper.xml
中的查询语句,column="id"
为传递的查询条件的值,也就是将这个值赋给EmployeeMapper.xml
中的#{deptId}
EmployeeMapper.xml
最后呢,也就是将查询到的员工信息,即多条Employee记录封装给Department
的emps
属性。
注意:collection的分步查询也是可以延迟加载的,具体配置与上篇中的association
一致
另外,collection
元素中还有个fetchType
类型,也是用来控制延迟加载的,不过比全局配置的优先级更高。
fetchType
可选的。有效值为 lazy
和eager
。 指定属性后,将在映射中忽略全局配置参数lazyLoadingEnabled
,使用属性的值。
补充:collection
中的column
属性是数据库中的列名,或着是列的别名,用来传递给select
属性所指定语句中的参数,那如果需要传递多个参数该怎么写?
官方文档: