MyBatis Plus的多表更新怎么使用?

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配置。