• mybatis学习记录四——输入、输出映射


    6      输入映射

    通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型。

    6.1.1     需求

    完成用户信息的综合查询,需要传入查询条件很复杂(可能包括用户信息、其它信息,比如商品、订单的)

    6.1.2     定义包装类型pojo

    针对上边需求,建议使用自定义的包装类型的pojo。在包装类型的pojo中将复杂的查询条件包装进去。

    6.1.3     mapper.xml

    在UserMapper.xml中定义用户信息综合查询(查询条件复杂,通过高级查询进行复杂关联查询)。

     

    6.1.4     mapper.java

     

    6.1.5     测试代码

     

    7       输出映射

    7.1     resultType

    使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。

    如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。

    只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。

    7.1.1     输出简单类型

    7.1.1.1              需求

    用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表才可以实现分页。

    7.1.1.2              mapper.xml

     

    7.1.1.3              mapper.java

    7.1.1.4              测试代码

     

    7.1.1.5              小结

    查询出来的结果集只有一行且一列,可以使用简单类型进行输出映射。

    7.1.2     输出pojo对象和pojo列表

    不管是输出的pojo单个对象还是一个列表(list中包括pojo),在mapper.xml中resultType指定的类型是一样的。

    在mapper.java指定的方法返回值类型不一样:

             1、输出单个pojo对象,方法返回值是单个对象类型

     

        2、输出pojo对象list,方法返回值是List<Pojo>

     

    生成的动态代理对象中是根据mapper方法的返回值类型确定是调用selectOne(返回单个对象调用)还是selectList (返回集合对象调用 ).

    7.2     resultMap

    mybatis中使用resultMap完成高级输出结果映射。

    7.2.1     resultMap使用方法

    如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。

    1、定义resultMap

    2、使用resultMap作为statement的输出映射类型

    7.2.2     将下边的sql使用User完成映射

    SELECT id id_,username username_ FROM USER WHERE id=#{value}

    User类中属性名和上边查询列名不一致。

    7.2.2.1              定义reusltMap

     

    7.2.2.2              使用resultMap作为statement的输出映射类型

     

    7.2.2.3              mapper.java

     

    7.2.2.4              测试

     

    1.2     小结

    使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。

    如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。

  • 相关阅读:
    平稳退化,JS和HTML标记分离,极致性能的JavaScript图片库
    简单选择排序(Simple Selection Sort)的C语言实现
    堆排序(Heap Sort)的C语言实现
    快速排序(Quick Sort)的C语言实现
    希尔排序(Shell's Sort)的C语言实现
    2-路插入排序(2-way Insertion Sort)的C语言实现
    折半插入排序(Binary Insertion Sort)的C语言实现
    直接插入排序(Straight Insertion Sort)的C语言实现
    栈的链式存储方法的C语言实现
    栈的顺序存储方式的C语言实现
  • 原文地址:https://www.cnblogs.com/PengChengLi/p/8470479.html
Copyright © 2020-2023  润新知