mybatisplus多表关联修改
时间: 2024-07-11 22:01:14 浏览: 155
MyBatisPlus 是基于 MyBatis 的一个优秀的 ORM(Object-Relational Mapping)框架,它提供了方便的方法处理数据库操作,包括关联表的更新。当涉及到多表关联修改时,MyBatisPlus 提供了一种简化的方式来管理这些操作。
假设我们有两个关联表,比如用户(User)和订单(Order),User 对象有一个 OrderList 属性,表示用户拥有的订单集合。如果我们想在一个用户对象中添加或删除订单,同时更新 User 和 Order 的信息,MyBatisPlus 提供了以下步骤:
1. **关联映射**:首先,在实体类 User 中设置关联属性为 `@TableId` 和 `@Many`,并指定对应的外键字段。
```java
public class User {
@TableId("id")
private Long id;
@Many
@JoinColumn(name = "order_id") // 假设Order表的主键名为order_id
private List<Order> orderList;
}
```
2. **创建查询器方法**:在 User 实体类上,你可以定义一个针对关联修改的方法,如 `saveOrUpdate()` 或 `updateWithBouns()`, 这些方法通常会自动处理级联操作。
```java
public interface UserRepository extends BaseMapper<User> {
default void saveOrUpdate(User user) {
this.updateById(user);
// 如果要同时保存订单,可能需要调用 OrderRepository 的方法
user.getOrderList().forEach(order -> orderMapper.insert(order));
}
}
```
3. **执行更新**:在服务层中,获取到用户对象后,调用上述定义好的方法即可完成关联表的修改。
```java
UserService userService = new UserService();
User updateUser = ...; // 修改后的用户对象
userService.saveOrUpdate(updateUser);
```
阅读全文