在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