前言综述:

 

其实在我们分析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. String()与 toString()

    我们知道String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别的 1..toString()可以将所有的的数据都转换为字符串,但 ...

  2. 【BZOJ-1426】收集邮票 概率与期望DP

    1426: 收集邮票 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 261  Solved: 209[Submit][Status][Discuss] ...

  3. iOS - 沙盒与目录

    NSFileManager NSBundle Class Cluster 采用Tagged Pointer的字符串 NSPathStore iOS证书ipa包重签名探究 url 结构 1. iOS 沙 ...

  4. WEKA使用

    参考 http://bbs.middleware123.com/thread-24052-1-1.html  使用Weka进行数据挖掘 http://quweiprotoss.blog.163.com ...

  5. 面试web前端开发,被打击了

    今天我去面试web前端开发,被打击了,也跟我也有一定的关系,最基础的东西我都没回答好,哎! 主要是我在等我有意向的公司给我发offer,闲着没事,刚好又有公司叫我去面试,我抱着多面一家也没有啥子坏处就 ...

  6. 7 款顶级开源 BI(商务智能)软件和报表工具

    在这个信息化时代,每分每秒都产生海量数据.在海量数据中,挖掘出有用的数据,并且能以较人性化.直观的方式展示这些数据,变得尤为重要.本文将介绍 7款顶级开源 BI(商务智能)软件和报表工具,用于商业数据 ...

  7. 作为一名前端er,从武汉来到深圳三个月有感

    来到深圳已经三个月了,从最开始的担心自己的能力不够怕不能够在深圳这个互联网产品及其发达的城市立足下来,到现在已经慢慢地拾起了一丁点的信心了 (虽然还有很多知识是不够的.但是相当于之前我的,我是觉得我已 ...

  8. 10 件有关 JavaScript 让人费解的事情

    JavaScript 可算是世界上最流行的编程语言,它曾被 Web 开发设计师贴上噩梦的标签,虽然真正的噩梦其实是 DOM API,这个被大量的开发与设计师随手拈来增强他们的 Web 前端的脚本语言, ...

  9. Floyed判环/龟兔算法

    求[(5+2√6)2^x+1 ] mod p 的值,其中 0 ≤ x < 232 , p 是个质数,p ≤ 46337 .(这里介绍的是一种暴力的做法) (5+2√6)2^n+1 = an + ...

  10. AJAX + WebService 实现文件上传

    1. 界面HTML <p >上传文件: <input id="zfiles" type="file" name="file" ...