不积跬步,无以至千里;不积小流,无以成江海。

Mybatis学习之路---一对一、一对多关联映射

JAVA 康康 1560℃ 0评论

在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>

2

二、一对多关联

关键:相互调用

在实体中创建 关联的集合 (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学习之路---一对一、一对多关联映射

喜欢 (4)or分享 (0)
发表我的评论
取消评论

 

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址