Mybatis Plus支持关联更新,可以很方便的实现多表更新:
1. 一对一关联
@TableName("user")
public class User {
@TableField(exist = false)
@OneToOne(cascade = CascadeType.ALL)
private Role role;
}
user.setRole(...);
// update user, role
userMapper.updateById(user);
2. 一对多关联
@TableName("user")
public class User {
@TableField(exist = false)
@OneToMany(cascade = CascadeType.ALL)
private List<Order> orders;
}
user.getOrders().add(...);
// update user, orders
userMapper.updateById(user);
3. 多对一关联
@TableName("order")
public class Order {
@TableField(exist = false)
@ManyToOne(cascade = CascadeType.ALL)
private User user;
}
order.setUser(...);
// update order, user
orderMapper.updateById(order);
4. 多对多关联
@TableName("user")
public class User {
@TableField(exist = false)
@ManyToMany
private List<Role> roles;
}
user.getRoles().add(...);
// update user, user_role
userMapper.updateById(user);
通过给关联关系指定cascade = CascadeType.ALL配置,Mybatis Plus在更新主表时会自动更新关联记录。
主要区别在于:
- 一对一更新
- 一对多更新
- 多对一更新
- 多对多更新
都需要给关联关系指定cascade配置。