MyBatis(跨跨联表查询)
时间: 2024-01-23 13:03:24 浏览: 25
MyBatis 支持跨多个表进行联表查询。在 SQL 语句中,可以使用多个表的名称和表之间的连接方式(如 INNER JOIN、LEFT JOIN 和 RIGHT JOIN)来实现联表查询。
以下是一个简单的例子,演示了 MyBatis 如何实现跨多个表进行联表查询:
```
<select id="getOrdersWithDetails" resultMap="orderResult">
SELECT o.order_id, o.order_date, c.customer_name, i.item_name, i.item_price
FROM orders o
INNER JOIN customers c ON o.customer_id = c.customer_id
INNER JOIN order_items oi ON o.order_id = oi.order_id
INNER JOIN items i ON oi.item_id = i.item_id
WHERE o.order_id = #{orderId}
</select>
<resultMap id="orderResult" type="Order">
<id property="orderId" column="order_id" />
<result property="orderDate" column="order_date" />
<result property="customerName" column="customer_name" />
<collection property="items" ofType="OrderItem">
<result property="itemName" column="item_name" />
<result property="itemPrice" column="item_price" />
</collection>
</resultMap>
```
这个 SQL 查询语句中,通过 INNER JOIN 把订单表(orders)、客户表(customers)、订单项表(order_items)和商品表(items)关联起来,查询指定订单的详细信息。同时,通过 resultMap 配置,将查询结果映射成一个 Order 对象,包括订单基本信息和订单项信息。
通过 MyBatis 的联表查询功能,可以实现更加灵活和高效的数据查询,并且可以通过 resultMap 配置简单方便地将查询结果映射成 Java 对象。