mybatis中resultMap的使用
2024-10-07 07:06:35
在mybatis中,使用<select>标签,必须要设置resultType属性 或 resultMap属性
否则会报错!
resultType一般是返回简单类型的查询结果,涉及一张表
可是当我们使用关联查询时,会涉及到多张表,这时的返回结果只用一个pojo类来描述,显然是不合适的
所以我们引入了resultMap属性,可以实现返回 自定义类型
在Mapper文件中,写入resultMap
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--其中namespace是命名空间,通过命名空间去寻找对应的sql标签
必须要唯一,定位到dao层的接口上-->
<mapper namespace="top.bigking.dao.EmpMapper">
<resultMap id="RM_Emp" type="top.bigking.pojo.Emp">
<!-- property属性表示 pojo 中的属性 ,column 表示数据库中的列名-->
<id property="empNo" column="empNo"/>
<result property="ename" column="ename" />
<result property="job" column="job" />
<result property="mgr" column="mgr" />
<result property="hireDate" column="hireDate" />
<result property="sal" column="sal" />
<result property="comm" column="comm" />
<result property="deptNo" column="deptNo" />
<association property="dept" column="deptNo" javaType="top.bigking.pojo.Dept" >
<result property="deptNo" column="deptNo" />
<result property="dname" column="dname" />
<result property="loc" column="loc" />
</association>
</resultMap>
<select 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
</select>
</mapper>
注意:<resultMap>中的id属性的值,必须与下面<select>标签中的resultMap的值相等,这样才能对应到返回值
在Emp.java中,增加属性:private Dept dept;
这样就能完成一对一查询
什么意思呢?
一个员工只属于一个部门,所以这是一对一查询
但是!反过来,一个部门可以有多个员工,这就是一对多查询!
在Dept.java中增加新的属性:private List<Emp> empList;
即可表示:一个部门中有多个员工
在DeptMapper.xml中,加入以下代码
<resultMap id="RM_Dept" type="top.bigking.pojo.Dept">
<id property="deptNo" column="deptNo" />
<result property="dname" column="dname" />
<result property="loc" column="loc" />
<collection property="empList" ofType="top.bigking.pojo.Emp" column="deptNo">
<result property="empNo" column="empNo"/>
<result property="ename" column="ename" />
<result property="job" column="job" />
<result property="mgr" column="mgr" />
<result property="hireDate" column="hireDate" />
<result property="sal" column="sal" />
<result property="comm" column="comm" />
<result property="deptNo" column="deptNo" />
</collection>
</resultMap>
完整代码如下:
链接:https://pan.baidu.com/s/1Gnp5VdJwYghJe8lFml1gTw
提取码:tm6z
最新文章
- 前端开发:css技巧,如何设置select、radio 、 checkbox 、file这些不可直接设置的样式 。
- Linux下,如何给PHP安装pdo_mysql扩展
- C# 图片自由变换 任意扭曲
- MSSQL 获取汉字全拼 和 汉字首字母
- [转]Ionic – Mobile UI Framework for PhoneGap/Cordova Developers
- PAT 解题报告 1007. Maximum Subsequence Sum (25)
- POJ3352Road Construction(无向图强连通)
- EL标签库
- HDU-5391 Zball in Tina Town
- JAVA_HOME 的设置
- iOS APP之本地数据存储(译)
- 利用LinkedList实现洗牌功能
- C++矩阵处理库--Eigen初步使用
- C# selenium环境配置
- Python学习之路-Day2-Python基础3
- 小程序获取formid配置模板消息
- iptables nat 技术转发
- Mysql数据约束 整理
- 关于爬虫中常见的两个网页解析工具的分析 —— lxml / xpath 与 bs4 / BeautifulSoup
- 自学Python1.3-centos内python3并与python2共存
热门文章
- 配置文件加载位置与多profile文件
- Ubuntu18.04下更改apt源为阿里云源
- Python连接MySQL之Python库pymysql
- php+html5实现无刷新上传,大文件分片上传,断点续传
- UVa 11212 Editing a Book (IDA* &;&; 状态空间搜索)
- FZU 2203 单纵大法好 (二分 &;&; 贪心)
- DFS-全排列
- 【bzoj3223】Tyvj 1729 文艺平衡树
- 浅谈 Catalan number——卡特兰数
- uiautomatorviewer报错 Error taking device screenshot: EOF