mybatis 主子表同事新增
时间: 2023-06-29 18:15:39 浏览: 48
如果您要同时新增主表和子表的数据,可以按照以下步骤进行操作:
1. 在主表对应的 Mapper 中,先新增主表数据,并获取主表的主键值。
2. 在子表对应的 Mapper 中,新增子表数据,并将主表的主键值设置为外键值。
具体的代码实现可以参考以下示例:
```java
// 主表 Mapper
public interface OrderMapper {
// 新增主表数据
int insertOrder(Order order);
}
// 子表 Mapper
public interface OrderItemMapper {
// 新增子表数据
int insertOrderItem(OrderItem orderItem);
}
// Service 层
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemMapper orderItemMapper;
// 新增主子表数据
public void addOrder(Order order, List<OrderItem> orderItems) {
// 新增主表数据
orderMapper.insertOrder(order);
// 获取主表主键值
int orderId = order.getOrderId();
// 新增子表数据
for (OrderItem orderItem : orderItems) {
orderItem.setOrderId(orderId); // 设置外键值
orderItemMapper.insertOrderItem(orderItem);
}
}
}
```
在上面的示例中,`Order` 表是主表,`OrderItem` 表是子表。在 `OrderService` 中,`addOrder` 方法同时新增了主表和子表的数据。首先,调用 `orderMapper.insertOrder(order)` 方法新增主表数据,并获取主表的主键值。然后,遍历子表数据,将主表的主键值设置为外键值,并调用 `orderItemMapper.insertOrderItem(orderItem)` 方法新增子表数据。这样就实现了同时新增主子表数据的功能。