SSM之MyBatis_02_06关联查询——实现一对一_扩展类的方式_(包含 super.toString( )的使用、怎么在子类里面调用父类的toString方法)

MyBatis_02_01关联查询——实现一对一

前言

mybatis里面实现上一篇文章讲的关联查询的 一对一

一对一 的实现 —— resultType方式实现

在这里插入图片描述
我们使用mybatis的时候,怎么把这个数据查出来呢
我们先不要在模型里面套模型,先写个订单的扩展类
理解为什么一定要使用扩展类,因为是联合查询,没有任何一个标准的model会有这么多字段
(标准model是跟数据库的某一张表相对应的),
它是多个表联合查出来的

复杂查询时,单表对应的po(即model类)类已不能满足输出结果集的映射。所以要根据需求建立一个扩展类来作为resultType的类型
#查找某个定单id的信息,包括用户名字和地址
SELECT o.*,u.username,u.address FROM orders o,user u
WHERE o.user_id = u.id AND o.id = 3

第一步:写个订单的扩展类

在这里插入图片描述
下面我们具体写写,注意代码是活的,按照上面文档写也可以,
只要思路的对的就可以。就好像变量命名,不要求完全一致的,只要编程思想的对的即可
把之前测试的order 改个名字orders,或者新建一个model 命名为 orders
在这里插入图片描述

在这里插入图片描述
注意不仅要提供set/set方法 也要提供toString方法
在这里插入图片描述
然后让它去继承Orders就好了,这样它就有所有的Orders的属性了,
然后我们再根据查询出来的sql 在扩展类里面添加应该新加的属性即可
在这里插入图片描述
注意根据需求来
在这里插入图片描述
根据需求只要加这两个就行了
在这里插入图片描述
不仅要提供get./set,为了后面方便调试,还要提供toString

包含 super.toString( ),没想到包含 super.toString( )还可以这么用
super.toString( )很实用

下一步是啥?
映射文件不要忘记了

第二步 订单单接口和配套的映射文件

文档内容
在这里插入图片描述
在这里插入图片描述
详细讲解:
我们肯定不能还在之前的UserMapper里面去写东西
新建好OrderMapp和OrderMapp.xml在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

第三步:加载映射文件

在这里插入图片描述
详细讲解
注意,如果别名里面已经配置了包名就不需要再配置具体的xml文件了(这块知识在前面)
在这里插入图片描述

第五步:测试

在这里插入图片描述
详细讲解
在这里插入图片描述
在这里插入图片描述
这样就实现了
这种使用扩展类的方式当然没有问题
但是我们可能会更倾向于使用下一篇文章所讲的
模型里面嵌套模型的方式

即这种方式
在这里插入图片描述
下一篇文章探讨一下模型里面嵌套模型的方式

一对一 的实现 —— resultMap的方式实现

掌握association的使用

1、OrdersMapper.java添加一个方法
在这里插入图片描述
2、OrdersMapper.xml

在这里插入图片描述
测试
在这里插入图片描述
这样就完成了
需要注意的是,resultMap还需要扩展类吗?
其实不需要了
因为
在这里插入图片描述
需要改成
在这里插入图片描述
我们运行项目 是死活都是报错的,看来文档没有说得很明白,留了个坑
在这里插入图片描述
一对一 的实现 —— resultMap的方式实现 具体实现看下一篇文章,
这里只把疑问提出来,这样也许印象会更深刻
从来就没有一帆风顺的人生,下一篇填坑应该不算过分

总结

resultType:
使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。如果没有查询结果的特殊要求建议使用resultType

resultMap:
需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的对象属性中

resultMap可以实现延迟加载,resultType无法实现延迟加载

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值