zoukankan      html  css  js  c++  java
  • MyBatis中resultType和resultMap的区别

    resultType和resultMap功能类似  ,都是返回对象信息  ,但是resultMap要更强大一些 ,可自定义。因为resultMap要配置一下,表和类的一一对应关系,所以说就算你的字段名和你的实体类的属性名不一样也没关系,都会给你映射出来,但是,resultType就比较鸡肋了,必须字段名一样,比如说 cId和c_id 这种的都不能映射 。下面介绍几个常用的映射关系:

     

     单表查询: resultMap:当使用resultMap做SQL语句返回结果类型处理时,通常需要在mapper.xml中定义resultMap进行pojo和相应表字段的对应。

    <!-- 订单查询关联用户的resultMap
        将整个查询的结果映射到cn.itcast.mybatis.po.Orders中
         -->
        <resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap">
            <!-- 配置映射的订单信息 -->
            <!-- id:指定查询列中的唯 一标识,订单信息的中的唯 一标识,如果有多个列组成唯一标识,配置多个id
                column:订单信息的唯 一标识 列
                property:订单信息的唯 一标识 列所映射到Orders中哪个属性
              -->
            <id column="id" property="id"/>
            <result column="user_id" property="userId"/>
            <result column="number" property="number"/>
            <result column="createtime" property="createtime"/>
            <result column="note" property="note"/>        
        </resultMap>
    View Code

    关联查询(一对一):resultMap对于一对一表连接的处理方式通常为在主表的pojo中添加嵌套另一个表的pojo,然后在mapper.xml中采用association节点元素进行对另一个表的连接处理。例如

    <!-- 订单查询关联用户的resultMap
        将整个查询的结果映射到cn.itcast.mybatis.po.Orders中
         -->
        <resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap">
            <!-- 配置映射的订单信息 -->
            <!-- id:指定查询列中的唯 一标识,订单信息的中的唯 一标识,如果有多个列组成唯一标识,配置多个id
                column:订单信息的唯 一标识 列
                property:订单信息的唯 一标识 列所映射到Orders中哪个属性
              -->
            <id column="id" property="id"/>
            <result column="user_id" property="userId"/>
            <result column="number" property="number"/>
            <result column="createtime" property="createtime"/>
            <result column="note" property=note/>
            
            <!-- 配置映射的关联的用户信息 -->
            <!-- association:用于映射关联查询单个对象的信息
            property:要将关联查询的用户信息映射到Orders中哪个属性
             -->
            <association property="user"  javaType="cn.itcast.mybatis.po.User">
                <!-- id:关联查询用户的唯 一标识
                column:指定唯 一标识用户信息的列
                javaType:映射到user的哪个属性
                 -->
                <id column="user_id" property="id"/>
                <result column="username" property="username"/>
                <result column="sex" property="sex"/>
                <result column="address" property="address"/>
            
            </association>
        </resultMap>
    View Code

    关联查询(一对多):resultMap的处理方式为在订单表数据的pojo中添加一个list,list中为订单明细表的属性,在mapper.xml中采用如下的处理方式:

    -- 订单及订单明细的resultMap
        使用extends继承,不用在中配置订单信息和用户信息的映射
         -->
        <resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersAndOrderDetailResultMap" extends="OrdersUserResultMap">
            <!-- 订单信息 -->
            <!-- 用户信息 -->
            <!-- 使用extends继承,不用在中配置订单信息和用户信息的映射 -->
            
            
            <!-- 订单明细信息
            一个订单关联查询出了多条明细,要使用collection进行映射
            collection:对关联查询到多条记录映射到集合对象中
            property:将关联查询到多条记录映射到cn.itcast.mybatis.po.Orders哪个属性
            ofType:指定映射到list集合属性中pojo的类型
             -->
             <collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">
                 <!-- id:订单明细唯 一标识
                 property:要将订单明细的唯 一标识 映射到cn.itcast.mybatis.po.Orderdetail的哪个属性
                   -->
                 <id column="orderdetail_id" property="id"/>
                 <result column="items_id" property="itemsId"/>
                 <result column="items_num" property="itemsNum"/>
                 <result column="orders_id" property="ordersId"/>
             </collection>
            
        
        </resultMap>
    View Code
  • 相关阅读:
    4. Postman测试集的批量执行(转)
    3. Postman Tests断言(转)
    2. Postman发送各种格式请求的方法
    1. Postman的安装
    2. Django创建项目
    Redis学习笔记(一)
    Oracle连接查询
    Redis学习笔记(五)- 数据类型之set类型
    Redis学习笔记(四)-数据类型之list类型
    PL/SQL实现JAVA中的split()方法的小例子
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/8960928.html
Copyright © 2011-2022 走看看