mybatis 多表查询怎么写
时间: 2023-05-20 17:02:01 浏览: 81
mybatis061 多表查询
3星 · 编辑精心推荐
在 MyBatis 中进行多表查询,可以使用联合查询或嵌套查询。联合查询可以使用 SQL 的 JOIN 关键字,而嵌套查询可以使用 MyBatis 的 resultMap 标签来实现。以下是一个使用 resultMap 实现嵌套查询的示例:
```xml
<select id="findOrdersWithDetails" resultMap="orderResultMap">
SELECT o.id, o.order_no, o.create_time, o.total_price,
d.id AS detail_id, d.product_name, d.price, d.quantity
FROM orders o
INNER JOIN order_details d ON o.id = d.order_id
WHERE o.user_id = #{userId}
</select>
<resultMap id="orderResultMap" type="Order">
<id property="id" column="id"/>
<result property="orderNo" column="order_no"/>
<result property="createTime" column="create_time"/>
<result property="totalPrice" column="total_price"/>
<collection property="details" ofType="OrderDetail">
<id property="id" column="detail_id"/>
<result property="productName" column="product_name"/>
<result property="price" column="price"/>
<result property="quantity" column="quantity"/>
</collection>
</resultMap>
```
这个示例中,我们使用了一个 resultMap 标签来定义查询结果的映射关系。在 select 标签中,我们使用了 JOIN 关键字来联合查询 orders 表和 order_details 表,并使用 WHERE 子句来限制查询结果。在 resultMap 标签中,我们定义了 Order 类型的映射关系,并使用 collection 标签来定义 Order 类型中的 details 属性的映射关系。这样,我们就可以通过一个 SQL 查询语句来获取 Order 对象及其关联的 OrderDetail 对象列表了。
注意:这只是一个示例,实际的查询语句和映射关系可能会因具体业务需求而有所不同。
阅读全文