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>

188

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kokotao

你的鼓励就是的创作的最大动力,

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值