mybatis之自动映射与自定义映射与级联查询
Mybatis中自动映射与自定义映射
## 自动映射【resultType】 自定义映射【resultMap】
解释:
- 自动映射【resultType】:指的是自动将表中的字段与类中的属性进行关联映射
- 自动映射解决不了两类问题
- 多表连接查询时,需要返回多张表的结果集
- 单表查询时,不支持驼峰式自动映射【不想用字段定义别名】
- 自动映射解决不了两类问题
- 自定义映射【resultMap】:自动映射解决不了问题,交给自定义映射
- 注意:
resultType与resultMap只能同时使用一个
问题:
有如下两表:
进行多表连接查询:
SELECT * FROM tbl_employee e, tbl_dept d WHERE e.`dept_id` = d.`dept_id` AND e.`id` =1;
先用resultType自动映射查询:
<select id="selectEmpAndDeptBypId" resultType="employee"> SELECT e.`id`, e.`email`, e.`last_name`, e.`salary`, d.`dept_id`, d.`dept_name` FROM tbl_employee e, tbl_dept d WHERE e.`dept_id` = d.`dept_id` AND e.`id` = #{empId} </select>
如上图可以看到 查询dept部门时显示null 无法返回多张表的结果集,
此时可以用自定义映射【resultMap】
进行查询
用resultMap自定义映射进行级联查询
<resultMap id="empAndDeptResultMap" type="employee"> <!-- 定义主键字段与属性关联关系 --> <id column="id" property="id"></id> <!-- 定义非主键字段与属性关联关系--> <result column="last_name" property="lastName"></result> <result column="email" property="email"></result> <result column="salary" property="salary"></result> <!-- 为员工中所属部门,自定义关联关系--> <result column="dept_id" property="dept.deptId"></result> <result column="dept_name" property="dept.deptName"></result> </resultMap> <select id="selectEmpAndDeptBypId" resultMap="empAndDeptResultMap"> <!-- 多表连接查询 使用resultMap解决多表查询问题--> SELECT e.`id`, e.`email`, e.`last_name`, e.`salary`, d.`dept_id`, d.`dept_name` FROM tbl_employee e, tbl_dept d WHERE e.`dept_id` = d.`dept_id` AND e.`id` = #{empId} </select>
本文来自博客园,作者:taotooler,转载请注明原文链接:https://www.cnblogs.com/taolo/p/17225847.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!