Mybatis高级映射(一对一的查询以及一对多)

本文介绍如何在MyBatis中使用resultMap实现复杂的数据映射。包括如何配置订单信息和用户信息的关联映射,以及如何处理多对多的关系映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接写xml。
先定义resultMap。(通过下面代码能看出Orders这个pojo类extends了User这个pojp类)
<!--订单查询关联用户的resultMap,将整个查询到的结果映射到cn.itcast.mybatis.po.Orders中-->
<resultMap type="cn.itcast.mybatis.po.Orders" id="OrderaUserResultMap">
<!--配置映射的订单信息-->
<!--id:指定查询列中的唯一标识,如果有多个列组成的唯一标示,配置多个id,
    column:订单信息的唯一标识列
    property:订单信息唯一标识列 所映射到Orders中哪个属性-->
    <id colum="id" property="id"/>
    <result colum="user_id" property="userId"/>
    <result colum="number" property="number"/>
    <result colum="createtime" property="createtime"/>
    <result colum="note" property="note"/>

<!--配置映射的关联的用户信息-->
<!--association:用于映射关联查询单个对象的信息
    property:要将关联查询的用户信息映射到Orders的哪个属性当中-->
    <association property="user" javaType="cn.itcast.mybatis.po.User">
    <!--id:关联查询用户的唯一标示
        column:指定唯一标示用户信息的列
        javaType:映射到User的那个属性-->
    <id colum="user_id" javaType="id"/>
    <result colum="username" property="username"/>
    <result colum="sex" property="sex"/>
    <result colum="address" property="address"/>
    </association>

//简单写一下区别,主要该sql
<!--订单明细查询
一条订单查询出来多条明细,要用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 colum="orderdetail_id" javaType="id"/>
    <result colum="items_id" property="itemsId"/>
    <result colum="items_num" property="itemsNum"/>
    <result colum="orderd_id" property="orderId"/>
</collection>
</resultMap>
在定义statement。
<!--查询订单关联查询用户信息,使用resultMap-->
<select id="findOrdersUserResultMap" resultMap="OrderaUserResultMap">
        select orders.*,USER.username, USER.sex,USER.address from orders,USER where orders.user_id=USER.id
</select>

注意:如果有相同的映射,可以用到extends这个属性,里面的值为其要继承的resultMap的id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值