mybatis关联关系

一、mybatis中的关联关系

我们需要注意的关联关系主要有两种,一对多、多对多,其中,多对多可以认为是两个一对多从而在编码时,我们只需要学会一对多,便可完成多对多的关系映射。

二、一对多关联关系配置

例如订单(Order)和订单项(OrderItem)

首先,目的是在查询order时,查询出相关联的orderitem,所以需要建立OrderVo和OrderItemVo来接收相应的值,可以在原有的类上进行属性增加,但是会破坏其与数据库的对应关系。

1、代码生成插件生成相关代码(使用上面的例子)

2、在OrderMapper.xml中(一对多)

  <resultMap id="OrderVoMap" type="com.csf.vo.OrderVo" >
    <result property="orderId" column="order_id"></result>
    <result property="orderNo" column="order_no"></result>
    <collection property="orderItems" ofType="com.csf.model.OrderItem">
      <result property="orderItemId" column="order_item_id"></result>
      <result property="oid" column="oid"></result>
      <result property="productId" column="product_id"></result>
      <result property="quantity" column="quantity"></result>
    </collection>
  </resultMap>

  <select id="queryOrderVoByOrderId" resultMap="OrderVoMap" parameterType="java.lang.Integer">
    select * from t_hibernate_order o,t_hibernate_order_item oi
    where o.order_id = oi.oid
      and o.order_id = #{orderId}
  </select>

 result定义出查询到的结果类型,以便接收,下面这个查询方法是连表查询,也就是我们需要的能查出相关联的数据,然后在外部直接调用这个方法就可以

3.在OrderItemMapper.xml中(多对一)

<resultMap id="OrderVoMap" type="com.javaxl.csf.vo.OrderItemVo" >
  <result property="orderItemId" column="order_item_id"></result>
  <result property="oid" column="oid"></result>
  <result property="productId" column="product_id"></result>
  <result property="quantity" column="quantity"></result>
  <association property="order" javaType="com.csf.model.Order">
    <result property="orderId" column="order_id"></result>
    <result property="orderNo" column="order_no"></result>
  </association>
</resultMap>

<select id="queryOrderItemVoByOrderItemId" resultMap="OrderVoMap" parameterType="java.lang.Integer">
   select * from t_hibernate_order o,t_hibernate_order_item oi
    where o.order_id = oi.oid
    and oi.order_item_id = #{orderItemId}
</select>

三、多对多的关联关系配置

在每一个实体类映射中,都将自己作为一方,配置collection标签即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无感_K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值