SSM之MyBatis 您所在的位置:网站首页 ssm-mapping SSM之MyBatis

SSM之MyBatis

2023-04-01 02:48| 来源: 网络整理| 查看: 265

系列文章目录文章目录系列文章目录前言resultType结果返回类型输出简单类型输出POJO单个对象输出POJO列表小结resultMap结果返回类型总结附加——如果传入是参数是一个包装类怎么使用前言

回顾一下前面的mybatis,我们讲到输入类型的参数类型

参数类型我们也称作输入映射

而resultType和resultMap也叫作输出映射(可以看前面一篇mybatis)

这里接着讲输出映射resultType和resultMap

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

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

而我们的mybatis的核心就是学会配置这两个东西

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

输入就是前面将的输入参数,这里我们探讨一下返回值,即输出映射

意思就是,返回值,我们既可以写resultType类型,也可以写resultMap类型

二选一,写了resultType就不能写resultMap,同理写了resultMap就不能写resultType

不能同时配置,所以必须要了解他们的使用

注意:类型有很多,但是常用的就是resultType和resultMap

resultType结果返回类型

使用resultType进行结果映射时,查询的列名和映射的pojo属性名完全一致,该列才能映射成功。

如果查询的列名和映射的pojo属性名全部不一致,则不会创建pojo对象;

如果查询的列名和映射的pojo属性名有一个一致,就会创建pojo对象。

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

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

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

假如其中一个字段不完全一致,那么这个字段就存不到model里面去,其它的完全一致的还是能够存进去的,但是也是有问题的啊,

所以不能这样做

输出简单类型

当输出结果只有一列时,可以使用ResultType指定简单类型作为输出结果类型。

案例:输出一个count(*)

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

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

我们跟着来操作一下

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

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

然后就可以测试了

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

首先通过session获取到模型的映射接口拿到userMapper

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

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

输出POJO单个对象

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

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

输出POJO列表

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

小结

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

resultMap结果返回类型

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

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

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

比如我们现在查询的结果的列名跟model里面不一样了,我们就得使用resultMap了

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

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

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

假如有一个字段相同呢

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

再运行看看

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

只要有一个字段一直,返回的数据都不会都为空如果我们非要它全部返回数据怎么做,这就需要resultMap,来进行结果的映射

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

就这么简单

注意resultMap有一定的容错率,但是也要符合逻辑

比如这样也能查出来

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

但是一般我们还是规范的写,只是要知道,mybatis也比较智能,能够智能的有一些容错率

总结

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

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

mapper接口

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

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

对应的映射文件

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

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

这样就行

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

所有的重点就在于 如果传入是参数是一个包装类怎么使用,在映射文件里面的sql里面参数一定要加上具体的类名打点调用

比如这里的#{user.id}



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有