前面说了全局配置文件中内容的详解,大家应该清楚了,现在来说说这映射文件,这章就对输入映射、输出映射、动态sql这几个知识点进行说明,其中高级映射(一对一,一对多,多对多映射)在下一章进行说明。

一、输入映射

      输入映射:配置statement中输入参数的类型。有四种

      1.1、传递简单类型,八大基本类型,比如int类型

          findUserById:根据id进行查询对应user,那么传入的就应该是int类型的值。所以使用别名int来映射传入的值

            

      1.2、传递pojo(代表正常的对象,比如user的javabean对象)    

          insertUser:就是传递的User这个对象。

              

          注意:在使用pojo之后,#{xxx}。 xxx表示pojo对象中的属性名。

      1.3、传递包装pojo(其中放置的为集合,对象引用等)

          什么是包装pojo?比如

            

         queryUserList

                 

          注意:user.username这个属性的获取,因为UserQueryVO是一个包装pojo,其中有user的引用。而user中又有username的属性,那么这样一层层取过来用即可。

      1.4、传递hashmap

          这个也很简单,理解了前面的,这个不难。

            

          注意:hashmap使用的是别名,mybatis中内置了。

二、输出映射

      讲解两个东西。resultType和resultMap

            

      2.1、resultType

         这个没什么好讲解的,也就是查询出来的结果的列名需要对应我们编写的输出映射类型中的属性名,如果不匹配,则不能完成映射,那么查询出来的结果也不能如愿的放入对应的对象中去。这个很正常,我们都知道。

      2.2、resultMap

         查询出来的结果的列名不用对应我们编写的输出映射类型中的属性名,也能够完成映射。此时就需要resultMap来做这个事情了,使用一个案例来说明

         案例1.:查询的sql语句使用了别名,如何将其与对应的对象的属性进行映射?使用resultMap来完成     

            

         分析:看懂了吗?其实就是通过resultMap这个中介,来帮我们完成映射,本来是不能够成功映射的,因为属性名和列名不同,但是中间有了resultMap帮我们完成这个映射。就可以达到这种效果了,不过使用resultMap是比resultType更为繁琐一点,但是也有其优点,在进行高级映射时,更多的是使用resultMap,这里只是先体验一下resutlMap的基本用法,在下一章讲解高级映射时,会深化讲解resultMap的用法。

三、动态sql

      这是个很有趣的东西,个人感觉挺好的。

      通过Mybatis提供的各种动态标签实现动态拼接sql,使得mapper映射文件在编写SQL时更加灵活,方便。常用动态SQL标签有:if、where、foreach

      3.1、if和where

         if标签用来判断

            里面有test属性,可以输入判断语句

         where标签,处理条件是否输入正确。如果没有条件,就把自己干掉,

         具体使用代码来看看

          

      3.2、foreach

          

            

         注意:foreach中的open和close这两个属性,open:在遍历之前将创建该字符串,一直遍历,遍历结束后,将close中的内容拼接上去。

      3.3、sql片段

           通俗点讲,就是对动态sql的重用,将写好的动态sql提取出来,然后在需要的地方进行调用。

           Sql片段要先定义后使用 

           

四、总结

        这章节也很简单,具体又认识了一下映射文件中的一些配置,最主要是接触到了两个新的东西,输出映射的resultMap和动态sql。其中resultMap并没有讲全,只是介绍了一下他的作用及最简单的用法,具体的会在下一章节讲解到。也就是高级映射。

Mybatis(三) 映射文件详解的更多相关文章

  1. Mybatis SQL映射文件详解

    Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...

  2. MyBatis 映射文件详解(六)

    MyBatis 配置文件类型 MyBatis配置文件有两种类型,如下: 全局配置文件(如 mybatis-config.xml) Mapper XML 映射文件(如 UserMapper.xml) 上 ...

  3. Hibernate配置文件和映射文件详解

    Hibernate是一个彻底的ORM(Object Relational Mapping,对象关系映射)开源框架. 我们先看一下官方文档所给出的,Hibernate 体系结构的高层视图: 其中PO=P ...

  4. Mybatis学习(三)————— 映射文件详解

    前面说了全局配置文件中内容的详解,大家应该清楚了,现在来说说这映射文件,这章就对输入映射.输出映射.动态sql这几个知识点进行说明,其中高级映射(一对一,一对多,多对多映射)在下一章进行说明. 一.输 ...

  5. MyBatis的SQL语句映射文件详解(三)----多参数传递的几种方式

    1.单一基本类型参数(String,int等) 单一的基本类型参数,将对应语句中的parameterType的值与参数的类型相同.然后直接 用“#{参数名}” 来获取 java代码 //String类 ...

  6. MyBatis的SQL语句映射文件详解

    SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用 < ...

  7. MyBatis 映射文件详解

    1. MyBatis 映射文件之<select>标签 <select>用来定义查询操作; "id": 唯一标识符,需要和接口中的方法名一致; paramet ...

  8. Mybatis的配置文件和映射文件详解

    一.Mybatis的全局配置文件 1.SqlMapConfig.xml是mybatis的全局配置文件,配置内容如下: properties(属性) settings(全局配置参数) typeAlias ...

  9. 笔记:MyBatis Mapper XML文件详解 - 映射和参数

    MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...

随机推荐

  1. http Content-Type 知多少

    前言 作为前端开发,工作中少不了与接口请求打交道.对于常见的content-type,也能说上来几个,感觉还算了解.直到有一天,我要在查看google的批量接口合并时发现Content-Type: m ...

  2. spring boot默认访问静态资源

    演示spring boot默认可以直接访问静态资源的2种方法: 第一种:在src/main/resources资源目录下创建一个名为"static"的文件夹(该文件夹的名称是规定死 ...

  3. Python爬虫:更加优雅的执行JavaScript(PyV8)

    https://www.jianshu.com/p/c534d6eb881a?utm_source=oschina-app

  4. 详解Spring中的ApplicationListener和ContextRefreshedEvent

    ApplicationListener和ContextRefreshedEvent一般都是成对出现的.最近在面试中问到了被面试者对于这两个的用法,面试者大多数被问懵了.可见基础知识的掌握程度.基于此本 ...

  5. BZOJ.3218.a + b Problem(最小割ISAP 可持久化线段树优化建图)

    BZOJ UOJ 首先不考虑奇怪方格的限制,就是类似最大权闭合子图一样建图. 对于奇怪方格的影响,显然可以建一条边\((i\to x,p_i)\),然后由\(x\)向\(1\sim i-1\)中权值在 ...

  6. Java笔记(十八)同步和协作工具类

    同步和协作工具类 一.读写锁ReentrantReadWriteLock ReadWriteLock接口的定义为: public interface ReadWriteLock { Lock read ...

  7. [JOI2017/2018]美術展

    [JOI2017/2018]美術展 题目大意: 有\(n(n\le5\times10^5)\)个物品,每个物品有两个属性:尺寸\(A_i\)和收益\(B_i\).从中选取一个子集,总收益为\(\sum ...

  8. 写一个简单的JQ插件(例子)

    虽然现在 vue angular react 当道啊但是那 JQ还是有一席之地很多很多的小单位啊.其实还会用到 我也放一个例子吧虽然我也不是很肯定有没有人写的比我更好啊但是我相信 我这个还是蛮实用的 ...

  9. [jzoj]1383.奇怪的问题

    Link https://jzoj.net/senior/#main/show/1383 Problem Alice总是会提出很多奇怪的问题,一天他让他的朋友Bob跟他一起研究一个奇怪的问题.问题是: ...

  10. web中icon 图标问题

    每个页面都会引入 icon 小图标,下面说下它的用法 一.icon使用 icon的引入方式,与css外部引入方式类似,需要在头部引入, 即: <link rel="shortcut i ...