MyBatis连表查询封装数据到一个对象
时间: 2024-11-29 19:32:26 浏览: 13
MyBatis 中的连表查询(也称为关联查询或嵌套查询)通常用于从多个数据库表中一起获取所需的数据,并将其映射到一个对象中。当你需要一次性加载多个相关联的数据模型时,这非常有用,比如在一个订单中包含多个商品信息。
在 MyBatis 的 XML 映射文件中,你可以通过 `<association>` 或 `<collection>` 标签配置关联查询。假设你有两个实体类,`Order` 和 `Product`,`Order` 包含一个 `List<Product>` 类型的属性 `products`,可以这样编写:
```xml
<select id="selectOrderWithProducts" resultType="com.example.Order">
SELECT o.*, p.*
FROM order o
LEFT JOIN product p ON o.product_id = p.id
WHERE o.order_id = #{orderId}
</select>
```
然后在 Java 端,通过 `@ResultMap` 注解创建一个结果映射:
```java
@ResultMap("orderResultMap")
public class OrderResult {
private Order order;
@Result(property = "products", column="product.*", javaType=Product.class, collection="list")
public List<Product> getProducts() {
return order.getProducts();
}
}
```
在查询方法中,你会得到一个 `OrderResult` 对象,其中包含了完整的订单信息以及关联的商品列表。
阅读全文