框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

1:resultMap的使用

2:总结&下节预告

3:凯哥真诚的说一说

本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第十八篇 高级结果映射二

声明:本文系凯哥Java(www.kaigejava.com)原创,未经允许,禁止转载!

在上节课中,我们学了resultType的使用。其实就是扩展一个类,然后使用resultType。

我们知道,mybatis返回resultType还有一种是返回resultMap.所以,这节课我们来讲解resultMap的使用。

一:resultMap的使用

先回顾,之前学习的resulMap的用法(单表查询的)

《框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射》这一篇文章中,我们介绍了单表的resulMap的使用。

user-mapper.xml中如下:

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

我们发现,就是数据库字段和对应pojo对象的属性一一对应就可以了。

可是,现在我们讲解的是一对一的结果映射,怎么弄呢?

1.1:一对一结果映射之resultMap的使用

使用,resultMap来进行一对一结果映射,其实就是将关联对象添加到主信息的对象中。

具体来说,就是对象嵌套对象的一种映射方式。

什么意思呢?请看下图:

我们修改扩展类 OrdersExt.添加需要关联的表对象(也就是user表的pojo对象)

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

思考:user对象,在OrderMapper.xml文件中怎么对应呢?

1.2:一对一实体嵌套映射文件的写法

在mybatis中一对一映射使用的是:association标签

通过之前的学习,我们知道,要想使用自定义的resulMap,必须先定义,然后再使用。

所以,我们先来定义订单与用户关系的自定义resulMap:

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

说明:

订单与用户是一对一的映射关系

association:mybatis中一对一关联映射

property:一方(从表:比如这里的user表)在另一方(主表,比如这里的ordres表)中对应的属性

在本实例中 主表是orders,从表是user.

而从表user的pojo对象,在主表orders的pojo对象中对应的属性是user.

所以这里的property=user

javaType:声明从表对应的pojo实体类

id:主表中外建列对应从表主键的属性

column:主键外建对应的列名

property:主表外建对应从表主键的实体对象中属性

在本实例中,我们知道orders表对应user表的外建是user_id

而user表主键对应user的pojo对象中属性就是id

所以这里的 column="user_id" property="id"

result:需要查询的非主键数据库列对应Java中pojo实体中的属性

用法不变。

这里是从表的数据库列对应从表的pojo实体对象属性

本实例中的user表中需要查询的用户名、性别这两列分别对应user表实体对象pojo的属性

直接看截图:

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

对应mpper接口类写法:

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

测试类写法:

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

运行结果:

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用

二:总结&下节预告

总结:

经过上节课和本节课的学习,我们知道一对一映射查询返回有两种方式:

resulType和resultMap两种方式。

通过比较,我们发现:

1:在一对一的结果映射时候,使用resultType更加的简单方便

2:如果有特殊要求(对象嵌套对象)的时候,需要使用reuslMap来进行映射了。

应用场景:

resultMap:

比如在查询订单列表的时候,需要点击列表中的看订单详情按钮的时候,就需要使用resultMap进行映射了。这样可以直接将用户信息也查下出来。

resulType:

使用resultType更倾向于查询明细信息。比如查询订单明细列表。

注意:订单列表(orders)和订单明细(orderdetail)列表不是同一个表!!

下节预告:

先看需求:

在查询订单信息的时候,关联查询出订单明细信息以及用户信息。

注意:

订单信息与订单明细是一对多关系

订单信息与用户信息是一对一关系。

怎么实现呢?

欢迎学习下一篇:一对多的查询。

ps:凯哥说一说。

如果您在浏览本文的时候,感觉本文对您有帮助,收藏的同时也请你转发下。谢谢

如果您感觉本文哪里讲的不好,或者是哪里讲错了,又或者是哪里不明白,欢迎评论。

凯哥真诚的希望大家评论。

本系列其他文章:

框架学习系列 mybatis 第十七篇 高级结果映射一

框架学习系列 mybatis 第十六篇 mybatis 常用标签三及与hibernate的比较

框架学习系列 mybatis 第十五篇 mybatis动态sql及常用标签二

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十三篇 mybatis 全局配置文件 二

框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值