Mybatis多表新增

Mybatis多表新增

开发工具与关键技术:eclipse/ mybatis多表新增
作者:苦行者
撰写时间:2021年5月28日

Mybatis的多表新增并不是什么非常难的技术点,只要记住以下两个关键点即可。
1、 使用事务管理
2、 获取表的新增主键ID
当我们新增了第一张表,再新增第二张表的时候,必需要拿到第一张表的新增ID,才能够进行第二张表的新增,否则保存到数据库中的数据就会缺少与第一张表的唯一关联外键,那么如何获取第一张表的新增ID呢?
其实非常简单,只需要在第一张表的Mapper.xml的新增SQL语句标签上添加上两个属性即可,这样它在新增完第一张表后,通过第一张表的实体类就能获取到它的新增ID。
下面以新增购物车为例讲解具体的实现方法。
首先是jsp代码,前端获取数据以post请求提交数据到MainController;
在这里插入图片描述

MainController接收到数据,调用service层的insertMoreTable方法新增S_ShoppCar购物车与S_ShoppCartDetil购物车明细两张表;
MainController代码:
在这里插入图片描述

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果您要同时新增主表和子表的数据,可以按照以下步骤进行操作: 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)` 方法新增子表数据。这样就实现了同时新增主子表数据的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值