注: 此文中的实体类还是沿用上一章的Emp和Dept两个类
还是老样子,不细说 直接上代码
01.在emp.xml中 配置和Dept的多对一的相关信息
1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="cn.happy.dao.EmpDao"> 6 <resultMap id="empMap" type="cn.happy.entity.Emp"> 7 <id property="empId" column="empNo"/> 8 <result property="empName" column="ENAME"/> 9 <result property="job"/> 10 <result property="mgr"/> 11 <result property="hiredate"/> 12 <result property="sal"/> 13 <result property="comm"/> 14 <association property="dept" javaType="cn.happy.entity.Dept"> 15 <id property="deptNo"/> 16 <result property="deptName" column="DNAME"/> 17 <result property="loc"/> 18 </association> 19 </resultMap> 20 21 <select id="getAllEmpInfo" resultMap="empMap"> 22 select * from Emp e,Dept d where e.deptno=d.deptno 23 </select>
使用association关键字关联Dept类 将dept属性的所有字段配置出来。
测试 多对一
02.在Dept.xml中 配置和Emp之间的一对多的关系
<mapper namespace="cn.happy.dao.DeptDao">
<resultMap type="Dept" id="deptMap">
<id property="deptNo" column="deptNo" />
<result property="deptName" column="DNAME" />
<!-- 一对多的关系 -->
<!-- property: 指的是集合属性的值, ofType:指的是集合中元素的类型 -->
<collection property="emps" ofType="Emp">
<id property="empId" column="empNo"/>
<result property="empName" column="ENAME"/>
<result property="job"/>
<result property="mgr"/>
<result property="hiredate"/>
<result property="sal"/>
<result property="comm"/>
</collection>
</resultMap>
<sql id="columns">
</sql>
<!-- 使用ResultMap关联dao的查询 解决级联查询问题 resultMap取值为上面的ResultMap节点配置的id属性值 -->
<select id="getAllDept" resultMap="deptMap">
select * from Emp e,Dept d where e.deptno=d.deptno
</select>
在这里由于emps属性是Set<Emp> 集合类型 所以就使用了collection标签来关联emp属性的字段。
测试 一对多