MyBatis关联关系映射

这篇博客详细介绍了MyBatis中的一对多和多对多关联关系映射的实现过程,包括实体类、映射文件、mapper接口的创建与配置,并提供了具体的查询示例。通过Order和OrderItem的一对多关系,以及书籍、类别和中间表的多对多关系,展示了MyBatis如何处理复杂的数据关联。
摘要由CSDN通过智能技术生成

首先将mybatis的关联关系与hibernate的关联关系做对比:

hibernate的关联关系:

mybatis的关联关系比hibernate的关联关系简单些,就看下面的对比吧

今天需要使用的表有:订单表,订单项表,书籍表,书籍类别表,书籍类别中间表

一对多关联关系

generatorConfig.xml中增加相关表

        <table schema="" tableName="t_hibernate_order" domainObjectName="Order"
               enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false">
        </table>
        <table schema="" tableName="t_hibernate_order_item" domainObjectName="OrderItem"
               enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false">
        </table>
        <table schema="" tableName="t_hibernate_book" domainObjectName="Hbook"
               enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false">
        </table>
        <table schema="" tableName="t_hibernate_category" domainObjectName="Category"
               enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false">
        </table>
        <table schema="" tableName="t_hibernate_book_category" domainObjectName="HbookCategory"
               enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false">
        </table>

generatorConfig.xml页面运行上方mybatis-generator

创建实体类/映射/mapper接口 

OrderVo 继承了Order的所有属性,最终查询的结果封装到OrderVo 里面

package com.zking.vo;

import com.zking.model.Order;
import com.zking.model.OrderItem;

import java.util.ArrayList;
import java.util.List;

public class OrderVo extends Order {
    private List<OrderItem> orderItems = new ArrayList<>();

    public List<OrderItem> getOrderItems() {
        return orderItems;
    }

    public void setOrderItems(List<OrderItem> orderItems) {
        this.orderItems = orderItems;
    }
}

OrderItemVo 继承了OrderItem的所有属性,最终查询的结果封装到OrderItemVo 里面

package com.zking.vo;

import com.zking.model.Order;
import com.zking.model.OrderItem;

/**
 * @author 小李飞刀
 * @site www.javaxl.com
 * @company
 * @create  2019-09-24 11:05
 */
public class OrderItemVo extends OrderItem {
    private Order order;

    public Order getOrder() {
        return order;
    }

    public void setOrder(Order order) {
        this.order = order;
    }
}

OrderMapper.xml

<!-- property:实体类属性  colum对应的是表字段-->
<resultMap id="OrderVoMap" type="com.zking.vo.OrderVo" >
  <result property="orderId" column="order_id"/>
  <result property="orderNo" column="order_no"></result>
  <collection property="orderItems" ofType="com.zking.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>
<sql id="Base_Column_List" >
  order_id, order_no
</sql>
<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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值