前言综述:

 

其实在我们分析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类是这样的:

  1. <pre code_snippet_id="2055039" snippet_file_name="blog_20161216_1_6817599" name="code" class="java"><span style="font-size:18px;">public class User{
  2. public String id;
  3. public String name;
  4. public String key;
  5. ……
  6. public String getId(String id){
  7. }
  8. }</span></pre>
  9. <pre></pre>
  10. <pre></pre>

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

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

使用上面定义的resultMap:

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

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

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

小结:

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

【Mybatis架构】输入、输出映射的更多相关文章

  1. MaBatis(5)输入/输出映射

    本次全部学习内容:MyBatisLearning   输入映射: 通过parameType指定输入参数的类型,类型可以是简单类型,hashmap,pojo等     传递pojo的包装对象 需求: 即 ...

  2. mybatis由浅入深day01_8输出映射_8.1resultType输出类型(8.1.1输出简单类型_8.1.2输出pojo对象和pojo列表_8.1.3输出hashmap)

    8 输出映射 8.1 resultType(输出类型) 使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功. 如果查询出来的列名和pojo中的属性名全 ...

  3. Mybatis框架的输出映射类型

    Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. resultType(输出类型) 1.输出简单类型 (1)我们在UserM ...

  4. 【Mybatis架构】Mapper映射文件中的#{}与${}

    前言 还记得当初从北京回来的时候,跟着倪文杰师姐做JavaITOO的一卡通模块,我亲姐贾梦洁带着我一块做,期间,我遇到了一个特别奇葩的问题,就死我要实现Mybatis的模糊查询,根据当时亲姐教给我方法 ...

  5. 【mybatis深度历险系列】mybatis中的输入映射和输出映射

    在前面的博文中,小编介绍了mybatis的框架原理以及入门程序,还有mybatis中开发到的两种方法,原始开发dao的方法和mapper代理方法,今天博文,我们来继续学习mybatis中的相关知识,随 ...

  6. 【JAVA - SSM】之MyBatis输出映射

    MyBatis中的输出映射有两种:resultType和resultMap. 1.resultType 使用resultType进行结果映射时,只有当查询结果中有至少一列的名称和resultType指 ...

  7. 【JavaEE】之MyBatis输出映射

    MyBatis中的输出映射有两种:resultType和resultMap. 1.resultType 使用resultType进行结果映射时,只有当查询结果中有至少一列的名称和resultType指 ...

  8. JAVAEE——Mybatis第二天:输入和输出映射、动态sql、关联查询、Mybatis整合spring、Mybatis逆向工程

    1. 学习计划 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态sql a) If标签 b) Where标签 c) Sql片段 d) Foreach标签 3.关联查询 a) 一对 ...

  9. mybatis入门基础(四)----输入映射和输出映射

    一:输入映射 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型. 1.1.传递pojo的包装对象 1.1.1.需求描述 完成用户信息的综合查询, ...

随机推荐

  1. java单例的几种实现方法

    java单例的几种实现方法: 方式1: public class Something { private Something() {} private static class LazyHolder ...

  2. [转]js获取域名、url、url参数值

    //获取域名host1 = window.location.host;host2 = document.domain; //获取页面完整地址url = window.location.href; 获取 ...

  3. Simple Network Management Protocol - SNMP Tutorial

    30.9 Simple Network Management Protocol Network management protocols specify communication between t ...

  4. jmeter 运行多个sql

    1.关键就是"allowMultiQueries=true" database url:jdbc:mysql://127.0.0.1:3306/api?useUnicode=tru ...

  5. Google 地图 API V3 使用入门

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  6. css面包屑导航编号

    content:counter(flag);counter-increment: flag;-->一般给导航条编号1,2,3

  7. 深入理解javascript原型和闭包(4)——隐式原型

    注意:本文不是javascript基础教程,如果你没有接触过原型的基本知识,应该先去了解一下,推荐看<javascript高级程序设计(第三版)>第6章:面向对象的程序设计. 上节已经提到 ...

  8. loopback文档翻译

    最近在学习loopback,期间在strongloop的官网翻译了部分文章. 见:https://docs.strongloop.com/pages/viewpage.action?pageId=60 ...

  9. 配置php.ini实现PHP文件上传功能

    本文介绍了如何配置php.ini实现PHP文件上传功能.其中涉及到php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_size等选项,这些 ...

  10. 【Alpha版本】冲刺-Day5

    队伍:606notconnected 会议时间:11月13日 会议总结 张斯巍(433) 今天安排:完成昨天没完成的,设置界面设计 完成度:85% 明天计划:学习UI设计 遇到的问题:无 感想:一定要 ...