mybatis 一对多写法
时间: 2023-08-28 19:15:52 浏览: 42
在 MyBatis 中,一对多关系通常是通过嵌套结果集实现的。以下是一对多关系的写法示例:
1. 定义实体类(Entity):
```java
public class Order {
private int id;
private String orderNo;
// 其他属性
private List<OrderItem> orderItems;
// getter 和 setter 方法
}
public class OrderItem {
private int id;
private String itemName;
// 其他属性
// getter 和 setter 方法
}
```
2. 编写映射文件(Mapper XML):
```xml
<resultMap id="orderResultMap" type="Order">
<id property="id" column="id" />
<result property="orderNo" column="order_no" />
<!-- 其他属性映射 -->
<collection property="orderItems" ofType="OrderItem" resultMap="orderItemResultMap" />
</resultMap>
<resultMap id="orderItemResultMap" type="OrderItem">
<id property="id" column="id" />
<result property="itemName" column="item_name" />
<!-- 其他属性映射 -->
</resultMap>
<select id="getOrderWithItems" resultMap="orderResultMap">
SELECT o.id, o.order_no, oi.id, oi.item_name
FROM orders o
LEFT JOIN order_items oi ON o.id = oi.order_id
WHERE o.id = #{orderId}
</select>
```
3. 编写Mapper接口:
```java
public interface OrderMapper {
Order getOrderWithItems(int orderId);
}
```
4. 使用Mapper接口进行查询:
```java
Order order = orderMapper.getOrderWithItems(1);
```
以上示例中,通过嵌套结果集的方式,将一对多关系的数据映射到了Order对象的orderItems属性中。注意,需要在映射文件中定义两个resultMap,一个用于映射Or