mybatis中resultMap的使用

在mybatis中,使用<select>标签,必须要设置resultType属性 或 resultMap属性

否则会报错!

resultType一般是返回简单类型的查询结果,涉及一张表

可是当我们使用关联查询时,会涉及到多张表,这时的返回结果只用一个pojo类来描述,显然是不合适的

所以我们引入了resultMap属性,可以实现返回 自定义类型

在Mapper文件中,写入resultMap

 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 
 6 <!--其中namespace是命名空间,通过命名空间去寻找对应的sql标签
 7 必须要唯一,定位到dao层的接口上-->
 8 <mapper namespace="top.bigking.dao.EmpMapper">
 9     <resultMap id="RM_Emp" type="top.bigking.pojo.Emp">
10         <!-- property属性表示 pojo 中的属性 ,column 表示数据库中的列名-->
11         <id property="empNo" column="empNo"/>
12         <result property="ename" column="ename" />
13         <result property="job" column="job" />
14         <result property="mgr" column="mgr" />
15         <result property="hireDate" column="hireDate" />
16         <result property="sal" column="sal" />
17         <result property="comm" column="comm" />
18         <result property="deptNo" column="deptNo" />
19         <association property="dept" column="deptNo" javaType="top.bigking.pojo.Dept" >
20             <result property="deptNo" column="deptNo" />
21             <result property="dname" column="dname" />
22             <result property="loc" column="loc" />
23         </association>
24     </resultMap>
25     <select id="query" resultMap="RM_Emp">
26         SELECT t1.EMPNO, t1.ENAME, t1.MGR, t1.HIREDATE, t1.JOB,t1.SAL, t1.COMM,t1.DEPTNO, t2.DNAME
27         FROM emp t1 LEFT JOIN dept t2
28         on t1.DEPTNO = t2.DEPTNO
29     </select>
30 </mapper>

注意:<resultMap>中的id属性的值,必须与下面<select>标签中的resultMap的值相等,这样才能对应到返回值

在Emp.java中,增加属性:private Dept dept;

这样就能完成一对一查询

什么意思呢?

一个员工只属于一个部门,所以这是一对一查询

但是!反过来,一个部门可以有多个员工,这就是一对多查询!

在Dept.java中增加新的属性:private List<Emp> empList;

即可表示:一个部门中有多个员工

 在DeptMapper.xml中,加入以下代码

 1     <resultMap id="RM_Dept" type="top.bigking.pojo.Dept">
 2         <id property="deptNo" column="deptNo" />
 3         <result property="dname" column="dname" />
 4         <result property="loc" column="loc" />
 5         <collection property="empList" ofType="top.bigking.pojo.Emp" column="deptNo">
 6             <result property="empNo" column="empNo"/>
 7             <result property="ename" column="ename" />
 8             <result property="job" column="job" />
 9             <result property="mgr" column="mgr" />
10             <result property="hireDate" column="hireDate" />
11             <result property="sal" column="sal" />
12             <result property="comm" column="comm" />
13             <result property="deptNo" column="deptNo" />
14         </collection>
15     </resultMap>

完整代码如下:

链接:https://pan.baidu.com/s/1Gnp5VdJwYghJe8lFml1gTw
提取码:tm6z

金麟岂是池中物,一遇风云便化龙!
原文地址:https://www.cnblogs.com/ABKing/p/12002459.html