mybatisplus 的主子表
时间: 2024-06-06 11:04:21 浏览: 16
MyBatisPlus是一个基于MyBatis的代码生成器和ORM框架,它简化了数据库操作,特别适合快速开发。在MyBatisPlus中,处理主子表关联通常涉及到一对多(ManyToOne)或一对一(OneToOne)的关系。
**主子表关联(ManyToOne)示例**:
- 主表(Parent Table):比如用户(User)表,有ID作为主键。
- 子表(Child Table):比如订单(Order)表,有一个外键字段user_id关联到用户表的ID。
在MyBatisPlus中,为了实现这种关联,你需要做以下操作:
1. 定义实体类(实体类需要继承`BaseEntity`):
```java
@Table("user")
public class User extends BaseEntity {
private String name;
// 其他字段
@RelatedOne(type = "LEFT", foreign = true) // LEFT表示左连接,foreign=true表示外键
private List<Order> orders;
}
```
这里`@RelatedOne`注解表示一对一或多对一关系。
2. 在子表(Order)中引用父表的ID:
```java
@Table("order")
public class Order extends BaseEntity {
private String orderId;
private Long userId; // 子表的外键,关联User表的id
// 其他字段
}
```
**一对一关联(OneToOne)示例**:
- 关系类似,只是子表只有一个父表对象,而不是列表。
```java
@Table("user")
public class User extends BaseEntity {
private String name;
// ...
@RelatedOne(foreign = true)
private Profile profile; // OneToOne关系
}
@Table("profile")
public class Profile extends BaseEntity {
private String bio;
private User user; // Profile的外键,关联User的id
}
```
**相关问题--:**
1. MyBatisPlus如何处理一对多关系的查询和插入操作?
2. 如何在MyBatisPlus中进行级联操作,如删除时自动删除子表记录?
3. 在MyBatisPlus中,如何使用分页插件处理主子表关联数据的查询?