运用mybatis-plus写一个多表连查的案例
时间: 2023-10-13 12:28:35 浏览: 160
假设我们有两张表:`user` 和 `order`,它们的表结构如下:
user表:
| 字段名 | 类型 | 备注 |
| ----- | ---- | ---- |
| id | int | 主键 |
| name | varchar | 用户名 |
order表:
| 字段名 | 类型 | 备注 |
| ----- | ---- | ---- |
| id | int | 主键 |
| user_id | int | 用户id |
| order_no | varchar | 订单号 |
其中,`order`表中的`user_id`字段和`user`表的`id`字段是关联的。
我们需要查询出所有的订单和对应的用户信息。使用Mybatis-Plus可以轻松实现多表连查操作,具体步骤如下:
1. 定义Order实体类
```java
@Data
public class Order {
private Integer id;
private Integer userId;
private String orderNo;
private User user; // 关联的用户信息
}
```
2. 定义User实体类
```java
@Data
public class User {
private Integer id;
private String name;
}
```
3. 创建Mapper接口
```java
@Mapper
public interface OrderMapper extends BaseMapper<Order> {
List<Order> selectOrderWithUser();
}
```
4. 实现Mapper接口
```java
@Override
public List<Order> selectOrderWithUser() {
return getBaseMapper().selectList(new QueryWrapper<Order>().select("order.*", "user.name")
.join("left join user on order.user_id = user.id"));
}
```
在实现Mapper接口的方法中,我们使用`QueryWrapper`构造查询条件,然后使用`select`方法指定要查询的字段,最后使用`join`方法实现表的关联查询。
到这里,我们就完成了多表连查的操作。使用Mybatis-Plus,我们不需要手动编写SQL语句,只需要定义好实体类和Mapper接口,然后使用Mybatis-Plus提供的API就可以轻松实现多表查询。
阅读全文