mybatis 返回对象中包含 list集合
时间: 2024-01-01 07:08:16 浏览: 89
好的,针对你的问题,我可以给你一个示例:
假设你有一个订单(Order)对象,每个订单有多个商品(Item)。你想要查询一个订单及其包含的所有商品,可以使用MyBatis的一对多映射关系。
首先,定义Order对象和Item对象:
```java
public class Order {
private int id;
private String orderNo;
private List<Item> items;
// getter和setter方法
}
public class Item {
private int id;
private String name;
private int count;
// getter和setter方法
}
```
然后,定义一个Mapper接口,查询一个订单以及其包含的所有商品:
```java
public interface OrderMapper {
Order selectOrderById(int id);
}
```
在这个接口中,我们只需要定义一个方法,通过订单ID查询订单及其包含的所有商品。现在,我们需要编写一个对应的XML映射文件:
```xml
<mapper namespace="com.example.mapper.OrderMapper">
<resultMap id="orderMap" type="Order">
<id property="id" column="id"/>
<result property="orderNo" column="order_no"/>
<!-- 配置一对多关系 -->
<collection property="items" ofType="Item">
<id property="id" column="item_id"/>
<result property="name" column="name"/>
<result property="count" column="count"/>
</collection>
</resultMap>
<select id="selectOrderById" resultMap="orderMap">
SELECT o.id, o.order_no, i.id AS item_id, i.name, i.count
FROM orders o
LEFT JOIN items i ON o.id = i.order_id
WHERE o.id = #{id}
</select>
</mapper>
```
在这个XML文件中,我们首先定义了一个resultMap,用于将查询结果映射到Order对象中。在resultMap中,我们定义了一对多的映射关系,将订单对象和商品对象关联起来。然后,我们定义了一个select语句,根据订单ID查询订单及其包含的所有商品。最后,我们将resultMap和select语句关联起来。
现在,我们就可以在OrderMapper中调用selectOrderById方法,查询一个订单及其包含的所有商品了。查询结果会包含一个Order对象,其中的items属性是一个List集合,包含了该订单的所有商品。
阅读全文