在mybatis mapper配置文件中使用 association 配置一对一关联,collection 配置一对多关联
创建测试的实体:
Employee ( id,username,salary,deptID(部门id 外键) ) ---对应 EmployeeMapper接口
Department (id,dept_name,dept_desc ) ----对应 DepartmentMapper 接口
1.一对一关联
在类中建立关联的对象
在mapper中使用 association 配置关联对象
property: 实体类中的参数名
column:实体类中的外键列
select:调用查询方法
<!-- 配置结果集 -->
<resultMap type="Employee" id="empRes"><id property="id" column="id" />
<result property="username" column="username" />
<result property="salary" column="salary" />
<!-- 关联department
property: 实体类中的参数名
column:实体类中的外键列
select:调用查询方法
--><association property="dept"
column="deptID"
select="com.cwk.dao.DepartmentMapper.findById">
</association>
</resultMap><!-- 查询雇员和部门信息(关联查询)
-->
<select id="findEmpWithDeptById" parameterType="Integer" resultMap="empRes">select * from employee e ,department d where e.deptID=d.id and e.id=#{id}
</select>
二、一对多关联
关键:相互调用
在实体中创建 关联的集合 (List<Employee>)
在EmployeeMapper 中创建查询 emp实体的方法
在EmployeeMapper.xml中映射查询方法
在 DepartmentMapper.xml 中调用 EmployeeMapper 中提供的方法<!-- 配置此实体的结果集 (关联多个雇员)-->
<resultMap type="Department" id="departAndEmpRes"><id property="id" column="id" />
<result property="deptName" column="dept_name" />
<result property="deptDesc" column="dept_desc" />
<!-- 映射属性集合property="emps" department中的雇员属性
column="id" 部门主键的id
select="com.cwk.dao.EmployeeMapper.findByDeptId" 调用EmployeeMapper中的接口查询雇员
--><collection property="emps"
column="id"
select="com.cwk.dao.EmployeeMapper.findEmpByDeptId">
</collection>
</resultMap><!-- 查询部门和关联的所有雇员
参数:部门ID
返回结果集
--><!-- 配置通过id查询部门 -->
<select id="findDeptAndEmpsById" parameterType="Integer" resultMap="departAndEmpRes">select * from department where id=#{id}
</select>
转载请注明:左手代码右手诗 » Mybatis学习之路---一对一、一对多关联映射