在 mybatis 中, 使用 <select> 标签, 必须要设置 resultType 属性 或 resultMap 属性
否则会报错!
resultType 一般是返回简单类型的查询结果, 涉及一张表
可是当我们使用关联查询时, 会涉及到多张表, 这时的返回结果只用一个 pojo 类来描述, 显然是不合适的
所以我们引入了 resultMap 属性, 可以实现返回 自定义类型
在 Mapper 文件中, 写入 resultMap
- <?xml version="1.0" encoding="UTF-8" ?>
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
必须要唯一, 定位到 dao 层的接口上 -->
- namespace="top.bigking.dao.EmpMapper">
- id="RM_Emp" type="top.bigking.pojo.Emp">
- property="empNo" column="empNo"/>
- property="ename" column="ename" />
- property="job" column="job" />
- property="mgr" column="mgr" />
- property="hireDate" column="hireDate" />
- property="sal" column="sal" />
- property="comm" column="comm" />
- property="deptNo" column="deptNo" />
- property="dept" column="deptNo" javaType="top.bigking.pojo.Dept">
- property="deptNo" column="deptNo" />
- property="dname" column="dname" />
- property="loc" column="loc" />
- id="query" resultMap="RM_Emp">
- SELECT t1.EMPNO, t1.ENAME, t1.MGR, t1.HIREDATE, t1.JOB,t1.SAL, t1.COMM,t1.DEPTNO, t2.DNAME
- FROM emp t1 LEFT JOIN dept t2
- on t1.DEPTNO = t2.DEPTNO
注意:<resultMap> 中的 id 属性的值, 必须与下面 <select> 标签中的 resultMap 的值相等, 这样才能对应到返回值
在 Emp.java 中, 增加属性: private Dept dept;
这样就能完成一对一查询
什么意思呢?
一个员工只属于一个部门, 所以这是一对一查询
但是! 反过来, 一个部门可以有多个员工, 这就是一对多查询!
在 Dept.java 中增加新的属性: private List<Emp> empList;
即可表示: 一个部门中有多个员工
在 DeptMapper.xml 中, 加入以下代码
- id="RM_Dept" type="top.bigking.pojo.Dept">
- property="deptNo" column="deptNo" />
- property="dname" column="dname" />
- property="loc" column="loc" />
- property="empList" ofType="top.bigking.pojo.Emp" column="deptNo">
- property="empNo" column="empNo"/>
- property="ename" column="ename" />
- property="job" column="job" />
- property="mgr" column="mgr" />
- property="hireDate" column="hireDate" />
- property="sal" column="sal" />
- property="comm" column="comm" />
- property="deptNo" column="deptNo" />
完整代码如下:
链接: https://pan.baidu.com/s/1Gnp5VdJwYghJe8lFml1gTw
提取码: tm6z
来源: http://www.bubuko.com/infodetail-3330162.html