学习笔记之Mybatis(resultType和resultMap)

本文详细介绍了MyBatis中resultType与resultMap的区别及使用场景,重点讲解如何利用resultMap进行复杂查询结果的映射,包括一对一、一对多关联查询等高级特性。

Mybaties的resultType:

当使用resultType映射查询时:

resltType中传入sql查询结果映射的pojo类

 <select id="findUserMix"  resultType="com.mb.po.UserShopQuery">
   <!-- 查询订单号为2的用户名和地址 -->
   select users.name,users.age,orders.* from users,orders  where orders.id=users.id
   </select>

UserShopQuery是完成扩展属性的类,假设一个表的pojo不能满足查询出来的属性,则需要对其完成扩展,继承这个类的方法

如果想要扩展表通过建立一个原表的pojo属性完成对表的扩展,那么首先要建立原表的对象,并存入扩展类中。完成输出即可


当使用resultMap映射查询时:

  <select id="findUserbyResultMap"  resultMap="UserShopResultMap">
   		<!-- 查询订单号为2的用户名和地址 -->
   			select users.name,users.age,orders.* from users,orders where orders.id=users.id
   </select>

在xml文件中建立一个resultMap的标签

<resultMap type="com.mb.po.UserShopQuery1" id="UserShopResultMap">

id:唯一标识符,完成功能的语句必须调用这个id来使用resultMap

type:输出的pojo类型类

<resultMap></resultMap>体中的标签

<id column="id"  property="id"/>

<!-- id:里面是存的是查询列中的唯一标识
        column:订单表中的唯一标识列
        property:订单信息的唯一标识,也是映射到的pojo类中的属性

    -->

 <result column="users_id" property="users_id"/>

 非唯一标识属性

 <association property="userShopCustom" javaType="com.mb.po.UserShopCustom">

 property:要将关联查询的信息映射到orders中的哪个属性

 javaType:要将关联查询的信息映射到orders中的属性的类型

假如有pojo类中包含了另一个pojo类,则使用这个标签可以完成对被包含的pojo类的操作

<id  column="users_id" property="id"/>

 column:关联被包含表中唯一标识符的属性

property:被包含表中的唯一标识符列名

<result column="name"  property="name" /> 

存储普通的属性

使用testMapper的一对多查询

需要的原因,假设只需要购买商品的用户的信息,但是假如一个用户购买了多个商品,那么联合查询时,会出现

相同的用户信息带着不同的商品信息出现, 


这时,将同样的买家的商品放入一个list集合中,就不会出现一个输出多个内容的情况了如下图:

改前


改后


private List<OrdersCustom> ordersCustom;这个就是存储信息的list集合

在xmlmapper文件中需要设置下

com.mb.po.UserCustomOrderAndCustom是扩展pojo类,ordersCustom是它 的集合属性

   <resulttype="com.mb.po.UserCustomOrderAndCustom" id="userCustomOrderAndCustom">
     <id column="id" property="id"/>
     <result column="name" property="name"/>
     <result column="age" property="age"/>
     <result column="local" property="local"/>
     <!-- 对关联查询多条记录映射到集合对象
          properties:返回到userCustomOrderAndCustom的哪个属性中去
           ofType=映射的pojo类型
      -->

    <collection property="ordersCustom"  ofType="OrdersCustom">
       <id column="ids"  property="id" />
       <result column="commodit_id" property="commodit_id"/>
    </collection>
   
   </resultMap>

变成





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值