mybatis plus多表联查的结果
时间: 2023-09-04 21:08:13 浏览: 111
Mybatis Plus 多表联查的结果通常是一个包含多个表的数据集合,可以使用实体类进行封装,也可以使用 Map 进行封装。下面是一个示例代码:
假设有两个表:User 和 Order,它们之间是一对多的关系,即一个用户可以对应多个订单。
User 表结构:
| id | name |
| ---- | ------- |
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
Order 表结构:
| id | user_id | amount |
| ---- | ------- | ------ |
| 1 | 1 | 100 |
| 2 | 1 | 200 |
| 3 | 2 | 150 |
| 4 | 3 | 300 |
实体类定义:
```java
public class User {
private Long id;
private String name;
private List<Order> orders;
// getter 和 setter 略
}
public class Order {
private Long id;
private Long userId;
private Integer amount;
// getter 和 setter 略
}
```
多表联查代码示例:
```java
List<User> userList = userMapper.selectList(new QueryWrapper<User>()
.select("id", "name")
.eq("id", 1)
);
for (User user : userList) {
List<Order> orderList = orderMapper.selectList(new QueryWrapper<Order>()
.select("id", "user_id", "amount")
.eq("user_id", user.getId())
);
user.setOrders(orderList);
}
```
以上代码会查询 id 为 1 的用户以及该用户的所有订单并封装到 User 实体类中,最终得到的结果集合如下:
```json
[
{
"id": 1,
"name": "Alice",
"orders": [
{
"id": 1,
"userId": 1,
"amount": 100
},
{
"id": 2,
"userId": 1,
"amount": 200
}
]
}
]
```
可以看到,该结果集合包含了 User 信息以及该用户的所有订单信息。
阅读全文