MyBatis知识五 输入映射和输出映射

parameterType输入映射

对于parameterType的输入映射,我们可以输入简单类型hashmap类型,最主要的是我们还可以输入包装类型
其中最重要的就是包装类型,我们的包装类型主要是用于复杂类型的查询语句之中。
在对我们输入参数为包装类型的时候最主要的就是对包装类POVO的设计,一般的情况下,我们都会在继承我们的基础类POJO,然后编写一个扩展类,然后在扩展类上面进行封装我们的额包装类POVO,或者就是直接在我们的POVO中直接扩展,而少了我们的扩展类。例如下图的组织形式。

类组织结构:
这里写图片描述

配置文件使用:
这里写图片描述

测试用例:
这里写图片描述

说明: 在上图,我们应该先进行我们包装类型的声明和定义,然后再去进行我们的数据传入,而对于SQL语句的书写,我们可以利用级联属性进行书写我们的SQL语句

resultType输出映射

一、使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。对应图一。
二、只要查询出来的列名和pojo中的属性有不一致的,也会创建pojo对象,但是不一致的属性的值为null。对应图二。
三、如果查询出来的列名和pojo中的属性名全部不一致,不会创建出我们的pojo对象,会给我们返回空对象,但是我们的SQL语句确实是查询出了相应的数据。对应图三。

一图:
这里写图片描述

二图:
这里写图片描述

三图:
这里写图片描述

resultMap输出映射

对于上述由于数据库字段名称和我们的类名不一致而导致转化对象失败的情况下,我们利用resultMap进行映射输出。
如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。

使用 resultMap作为输出映射 步骤
1、定义resultMap
2、使用resultMap作为statement的输出映射类型

<!-- 步骤一 -->
<!-- 定义resultMap type:resultMap 最终映射的对象,可以使用别名    id:唯一标识,用于引用-->
<resultMap type="User" id="userResultMap">

    <!--id标签 标识唯一标识,一般是主键  -->
    <id column="id_" property="id"/>

    <!-- result标签  对普通字段的映射 -->
    <result column="username_" property="username"/>

</resultMap>

<!-- 步骤二 -->
<!-- 使用resultMap 完成查询名称,与pojo类的属性名不一致的现象 resultMap 如果不在同一个Mapper中,进行namespace书写 -->

<select id="findUserWithResultType" parameterType="com.wf.model.UserVo" resultMap="userResultMap">

    select id id_, username username_ from User where username like '%${value}%' 

</select>

猜你喜欢

转载自blog.csdn.net/sinat_28978689/article/details/74887662