【Mybatis架构】输入、输出映射


前言综述:


      其实在我们分析Mybatis的查询缓存或者是一些简介的时候,我们就不难看到有关于Mybatis输入输出映射的东西,比如说:


但是一直没有想起来系统的来总结一下这方面的相关知识,偶然看到这块,心血来潮,总结一下:

       Mybatis的输入映射和输出映射可以是一些基本数据类型、hashmap或者是pojo的包装类型。其中输入映射相对来说比较简单,只有parameterType一种;相对来说,输出映射稍微复杂一点,存在resultType和resultMap两种方式或者说是格式,其中resultMap还涉及到Mybatis的延迟加载。接下来,我们就简单的介绍一下他们的相关内容。



一、输入映射:

       输入映射在mapper映射文件中(配置文件)是通过parameterType制定输入参数的类型。类型可以是java基本数据类型,也可是自定义的hashmap、pojo的包装类型。

1、java基础数据类型:



2、hashmap:首先在程序里面定义map:



mapper配置文件:



3、pojo包装类型就简单了,首先我们肯定有pojo类,然后直接晒mapper配置文件了:


提示:别忘了在SqlMapperConfig.xml中配置好这个Mapper映射文件


然后相对应的定义mapper接口就ok了,你要是不相信就自己 测试一下吧


刚才已经说过了,相对于输出映射来说,输入映射是十分简单的,没有那么多弯弯绕。接下来,我们就研究一下


Mybatis的输出映射:

       上面我们说到过,对于mybatis输出映射,有两种,resultType和resultMap。而且,resultType也有很多种对象类型,但是值得提一下的是,当我们使用resultType时,查询出来的列名必须和pojo中对应的属性名要一致才能正确的映射成功,否则,就会出现映射出错这种现象。但是万一真的必须不能一一映射的时候肿么办?肿么办?这时候resultMap就隆重登场了。举个简单的例子啊,但那个我们定义的pojo类是这样的:

public class User{
         public String id;
         public String name;
         public String key;
         ……
         public String getId(String id){
         }
}


  

可是我们的sql是这样的:
Select id as userID,name,key from table where ……

首先定义resultMap:

<resultMap id="userResultMap" type="user" ><!--这里的id是此resultMap的唯一标识-->
    <result column="key" property="key"/>
    <id column="userID" property="id"/><!--这里可以看成是主键-->
    <result column="name" property="name"/><!--普通属性的定义映射-->
</resultMap>

使用上面定义的resultMap:

<select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap">
            SELECT id as userID,username,key from user where……
</select>

接下来,就是我们己去定义mapper接口了进行调用了,自己接着测试一下吧。

     

       最后总结一下:使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。而且通过resultMap还可以实现Mybatis的延迟加载,具体的内容我们下次再来探讨。


小结:

       所谓是“纸上得来终觉浅,绝知此事要躬行”,纵使别人嘴里说出话来,自己不动动手试验一下,也是不知道别人说的究竟是怎样的,这句话送给我,也同样送给大家,动手试一下,大不了来一个System.out.println(),看看究竟是怎么回事。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值