• mybatis中resultMap和resultType的区别


    总结

    基本映射 :(resultType)使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。(数据库,实体,查询字段,这些全部都得一一对应)高级映射 :(resultMap) 如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。(高级映射,字段名称可以不一致,通过映射来实现

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

    单表查询: resultMap:当使用resultMap做SQL语句返回结果类型处理时,通常需要在mapper.xml中定义resultMap进行pojo和相应表字段的对应。
    订单查询关联用户的resultMap
    将整个查询的结果映射到cn.itcast.mybatis.po.Orders中

    1. "cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap">
    2. "id" property="id"/>
    3. "user_id" property="userId"/>
    4. "number" property="number"/>
    5. "createtime" property="createtime"/>
    6. "note" property="note"/>

    关联查询(一对一):resultMap对于一对一表连接的处理方式通常为在主表的pojo中添加嵌套另一个表的pojo,然后在mapper.xml中采用association节点元素进行对另一个表的连接处理。例如
    订单查询关联用户的resultMap
    将整个查询的结果映射到cn.itcast.mybatis.po.Orders中

    1. "cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap">
    2. "id" property="id"/>
    3. "user_id" property="userId"/>
    4. "number" property="number"/>
    5. "createtime" property="createtime"/>
    6. "note" property=note/>
    7. "user" javaType="cn.itcast.mybatis.po.User">
    8. "user_id" property="id"/>
    9. "username" property="username"/>
    10. "sex" property="sex"/>
    11. "address" property="address"/>

    关联查询(一对多):resultMap的处理方式为在订单表数据的pojo中添加一个list,list中为订单明细表的属性,在mapper.xml中采用如下的处理方式:
    订单及订单明细的resultMap
    使用extends继承,不用在中配置订单信息和用户信息的映射

    1. "cn.itcast.mybatis.po.Orders" id="OrdersAndOrderDetailResultMap" extends="OrdersUserResultMap">
    2. "orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">
    3. "orderdetail_id" property="id"/>
    4. "items_id" property="itemsId"/>
    5. "items_num" property="itemsNum"/>
    6. "orders_id" property="ordersId"/>

     

    association:
    作用:
    将关联查询信息映射到一个pojo对象中

    场合:
    为了方便查询关联查询可以使用assocation将关联查询信息映射为用户对象的pojo属性中。

    比如:查询订单及关联用户信息
    使用resultType无法查询结果映射到pojo对象的pojo属性中,根据对结构集查询遍历的需要选择使用resultType还是resultMap。

    collection:
    作用:
    将关联查询信息映射到一个list集合中。
    场合:
    为了方便查询遍历关联信息可以使用cellection将关联信息映射到list集合中。
    比如:
    查询用户权限范围模块及模块下的菜单,可使用collection将模块映射到模块list中将菜单列表映射到模块对象的菜单list属性中,这样做的目的也是方便对查询结果集进行遍历如果使用resultType无法将查询结果映射到list集合中

  • 相关阅读:
    scratch经典游戏主题源码分享,包含了20多款经典游戏
    Redis基本使用
    基于J2EE的网上购书系统(SSM框架)
    百度一面1h
    2023年华数杯数学建模C题母亲身心健康对婴儿成长的影响解题全过程文档及程序
    任职超18年,Go团队技术主管Russ Cox官宣卸任!
    Mybatis使用拦截器添加参数
    DAMA-DMBOK2重点知识整理CDGA/CDGP——第15章 数据管理成熟度评估
    通过代理模式 + 责任链模式实现对目标执行方法拦截和增强功能
    window系统安装 NodeJS
  • 原文地址:https://blog.csdn.net/m0_72252418/article/details/139677578