SSM之MyBatis_02_01_resultType结果返回类型和resultMap结果返回类型——输出映射、如果传入是参数是一个包装类怎么使用

本文详细介绍了MyBatis中resultType和resultMap的使用,resultType适用于字段与模型属性完全匹配的情况,而resultMap用于处理字段不一致时的结果映射。通过resultMap,可以定义列名与属性名的映射关系,实现灵活的数据转换。此外,还展示了当输入参数为包装类时的配置方法。
摘要由CSDN通过智能技术生成

系列文章目录

前言

回顾一下前面的mybatis,我们讲到输入类型的参数类型
参数类型我们也称作输入映射
而resultType和resultMap也叫作输出映射(可以看前面一篇mybatis)
这里接着讲输出映射resultType和resultMap
在这里插入图片描述
在这里插入图片描述
而我们的mybatis的核心就是学会配置这两个东西
在这里插入图片描述
输入就是前面将的输入参数,这里我们探讨一下返回值,即输出映射
意思就是,返回值,我们既可以写resultType类型,也可以写resultMap类型
二选一,写了resultType就不能写resultMap,同理写了resultMap就不能写resultType
不能同时配置,所以必须要了解他们的使用
注意:类型有很多,但是常用的就是resultType和resultMap

resultType结果返回类型

使用resultType进行结果映射时,查询的列名和映射的pojo属性名完全一致,该列才能映射成功。
如果查询的列名和映射的pojo属性名全部不一致,则不会创建pojo对象;
如果查询的列名和映射的pojo属性名有一个一致,就会创建pojo对象。
翻译成人话就是:数据库里面的对应的表的字段和我们模型model里面的字段是一样的时候就可以用resultType,如果不一致的话就用resultMap
在这里插入图片描述
在这里插入图片描述
假如其中一个字段不完全一致,那么这个字段就存不到model里面去,其它的完全一致的还是能够存进去的,但是也是有问题的啊,
所以不能这样做

输出简单类型

当输出结果只有一列时,可以使用ResultType指定简单类型作为输出结果类型。
案例:输出一个count(*)
在这里插入图片描述
在这里插入图片描述
我们跟着来操作一下
在这里插入图片描述
在这里插入图片描述
然后就可以测试了

在这里插入图片描述
首先通过session获取到模型的映射接口拿到userMapper
在这里插入图片描述
在这里插入图片描述

输出POJO单个对象

这个很容易理解,上面返回int,这里直接返回一个对象就行了,一样的,不再赘述
在这里插入图片描述

输出POJO列表

在这里插入图片描述

小结

输出单个pojo对象和pojo列表时,mapper映射文件中的resultType的类型是一样的,mapper接口的方法返回值不同。
同样的mapper映射文件,返回单个对象和对象列表时,mapper接口在生成动态代理的时候,会根据返回值的类型,决定调用selectOne方法还是selectList方法。

resultMap结果返回类型

数据库里面的对应的表的字段和我们模型model里面的字段是一样的时候就可以用resultType,如果不一致的话就用resultMap

如果查询出来的列名和属性名不一致,通过定义一个resultMap将列名和pojo属性名之间作一个映射关系。
1、定义resultMap
2、使用resultMap作为statement的输出映射类型
下面看怎么操作

在这里插入图片描述
比如我们现在查询的结果的列名跟model里面不一样了,我们就得使用resultMap了
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
假如有一个字段相同呢
在这里插入图片描述
再运行看看
在这里插入图片描述
只要有一个字段一直,返回的数据都不会都为空

如果我们非要它全部返回数据怎么做,这就需要resultMap,来进行结果的映射
在这里插入图片描述
就这么简单
注意resultMap有一定的容错率,但是也要符合逻辑
比如这样也能查出来
在这里插入图片描述
但是一般我们还是规范的写,只是要知道,mybatis也比较智能,能够智能的有一些容错率

总结

数据库里面的对应的表的字段和我们模型model里面的字段完全一致的时候就可以用resultType,
如果不完全一致的话就用resultMap

附加——如果传入是参数是一个包装类怎么使用

mapper接口
在这里插入图片描述
在这里插入图片描述
对应的映射文件
在这里插入图片描述
在这里插入图片描述
这样就行
在这里插入图片描述
所有的重点就在于 如果传入是参数是一个包装类怎么使用,在映射文件里面的sql里面参数一定要加上具体的类名打点调用
比如这里的#{user.id}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值