• 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

    金麟岂是池中物,一遇风云便化龙!
  • 相关阅读:
    【2021-08-09】问题还需一点一点去改正
    【2021-08-08】连岳摘抄
    【2021-08-07】请教帖
    21春助教总结
    实践总结+技术博客评分
    来吧 ,来吧 自己搭建一个erp 系统
    博客索引
    「CCNU21暑期第六次周赛」
    「CCNU21暑期第五次周赛」
    「图论」连通性问题
  • 原文地址:https://www.cnblogs.com/ABKing/p/12002459.html
Copyright © 2020-2023  润新知